diff --git a/example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java b/example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
index 61a8514..1eae90b 100644
--- a/example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
+++ b/example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
@@ -17,13 +17,27 @@
 import com.google.gerrit.extensions.annotations.RequiresCapability;
 import com.google.gerrit.sshd.CommandMetaData;
 import com.google.gerrit.sshd.SshCommand;
+import org.kohsuke.args4j.Option;
 
 @RequiresCapability(AdminExampleCapability.ADMIN_EXAMPLE)
 @CommandMetaData(name = "admin", description = "Administrate the example")
 public final class AdminExampleCommand extends SshCommand {
+  private int count = 1;
+
+  @Option(
+    name = "--count",
+    aliases = {"-c"},
+    metaVar = "COUNT",
+    usage = "Number of times to greet the administrator"
+  )
+  public void setCount(int count) {
+    this.count = count;
+  }
 
   @Override
   protected void run() {
-    stdout.print("Hello, example administrator\n");
+    while (count-- > 0) {
+      stdout.print("Hello, example administrator\n");
+    }
   }
 }
diff --git a/example-sshCommandDelegateDynamicBean/.buckconfig b/example-sshCommandDelegateDynamicBean/.buckconfig
new file mode 100644
index 0000000..3c82f1c
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/.buckconfig
@@ -0,0 +1,15 @@
+[alias]
+  plugin = //:example-sshCommandDelegateDynamicBean
+
+[java]
+  src_roots = java, resources
+  source_level = 8
+  target_level = 8
+
+[project]
+  ignore = .git
+
+[cache]
+  mode = dir
+  dir = buck-out/cache
+
diff --git a/example-sshCommandDelegateDynamicBean/.gitignore b/example-sshCommandDelegateDynamicBean/.gitignore
new file mode 100644
index 0000000..ef5f901
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/.gitignore
@@ -0,0 +1,9 @@
+/target
+/.classpath
+/.settings
+/.project
+/.buckd
+/buck-cache
+/buck-out
+*.iml
+/bazel-example-sshCommandDelegateDynamicBean
diff --git a/example-sshCommandDelegateDynamicBean/BUCK b/example-sshCommandDelegateDynamicBean/BUCK
new file mode 100644
index 0000000..afcb8ae
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/BUCK
@@ -0,0 +1,18 @@
+include_defs('//bucklets/gerrit_plugin.bucklet')
+
+gerrit_plugin(
+  name = 'example-sshCommandDelegateDynamicBean',
+  srcs = glob(['src/main/java/**/*.java']),
+  resources = glob(['src/main/**/*']),
+  manifest_entries = [
+    'Gerrit-PluginName: example-sshCommandDelegateDynamicBean',
+    'Gerrit-SshModule: com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean.SshModule',
+    'Implementation-Title: Example SSH Command Delegate Dynamic Bean',
+    'Implementation-URL: https://gerrit-review.googlesource.com/#/admin/projects/plugins/examples',
+  ],
+)
+
+java_library(
+  name = 'classpath',
+  deps = [':example-sshCommandDelegateDynamicBean__plugin'],
+)
diff --git a/example-sshCommandDelegateDynamicBean/BUILD b/example-sshCommandDelegateDynamicBean/BUILD
new file mode 100644
index 0000000..9beda34
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/BUILD
@@ -0,0 +1,12 @@
+load("//tools/bzl:plugin.bzl", "gerrit_plugin")
+
+gerrit_plugin(
+    name = "example-sshCommandDelegateDynamicBean",
+    srcs = glob(["src/main/java/**/*.java"]),
+    manifest_entries = [
+        "Gerrit-PluginName: example-sshCommandDelegateDynamicBean",
+        "Gerrit-SshModule: com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean.SshModule",
+        "Implementation-Title: Example SSH Command Delegate Dynamic Bean",
+    ],
+    resources = glob(["src/main/resources/**/*"]),
+)
diff --git a/example-sshCommandDelegateDynamicBean/LICENSE b/example-sshCommandDelegateDynamicBean/LICENSE
new file mode 100644
index 0000000..11069ed
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/LICENSE
@@ -0,0 +1,201 @@
+                              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.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+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.
diff --git a/example-sshCommandDelegateDynamicBean/WORKSPACE b/example-sshCommandDelegateDynamicBean/WORKSPACE
new file mode 100644
index 0000000..f28a461
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/WORKSPACE
@@ -0,0 +1,26 @@
+workspace(name = "sshCommandDelegateDynamicBean")
+
+load("//:bazlets.bzl", "load_bazlets")
+
+load_bazlets(
+    commit = "1affa0acc6e730f8959c28a2098b562d11a90f91",
+    #    local_path = "/home/<user>/projects/bazlets",
+)
+
+# Release Plugin API
+#load(
+#    "@com_googlesource_gerrit_bazlets//:gerrit_api.bzl",
+#    "gerrit_api",
+#)
+
+# Snapshot Plugin API
+load(
+    "@com_googlesource_gerrit_bazlets//:gerrit_api_maven_local.bzl",
+    "gerrit_api_maven_local",
+)
+
+# Load release Plugin API
+#gerrit_api()
+
+# Load snapshot Plugin API
+gerrit_api_maven_local()
diff --git a/example-sshCommandDelegateDynamicBean/bazlets.bzl b/example-sshCommandDelegateDynamicBean/bazlets.bzl
new file mode 100644
index 0000000..e14e488
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/bazlets.bzl
@@ -0,0 +1,17 @@
+NAME = "com_googlesource_gerrit_bazlets"
+
+def load_bazlets(
+    commit,
+    local_path = None
+  ):
+  if not local_path:
+      native.git_repository(
+          name = NAME,
+          remote = "https://gerrit.googlesource.com/bazlets",
+          commit = commit,
+      )
+  else:
+      native.local_repository(
+          name = NAME,
+          path = local_path,
+      )
diff --git a/example-sshCommandDelegateDynamicBean/lib/gerrit/BUCK b/example-sshCommandDelegateDynamicBean/lib/gerrit/BUCK
new file mode 100644
index 0000000..ca3acf9
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/lib/gerrit/BUCK
@@ -0,0 +1,20 @@
+include_defs('//bucklets/maven_jar.bucklet')
+
+VER = '2.15-SNAPSHOT'
+REPO = MAVEN_LOCAL
+
+maven_jar(
+  name = 'acceptance-framework',
+  id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
+  license = 'Apache2.0',
+  attach_source = False,
+  repository = REPO,
+)
+
+maven_jar(
+  name = 'plugin-api',
+  id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
+  license = 'Apache2.0',
+  attach_source = False,
+  repository = REPO,
+)
diff --git a/example-sshCommandDelegateDynamicBean/pom.xml b/example-sshCommandDelegateDynamicBean/pom.xml
new file mode 100644
index 0000000..956c157
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/pom.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (C) 2013 The Android Open Source Project
+
+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.
+-->
+<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/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>com.googlesource.gerrit.plugins</groupId>
+  <artifactId>example-sshCommandDelegateDynamicBean</artifactId>
+  <packaging>jar</packaging>
+  <version>2.15-SNAPSHOT</version>
+  <properties>
+    <Gerrit-ApiType>plugin</Gerrit-ApiType>
+    <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
+  </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <Gerrit-PluginName>example-sshCommandDelegateDynamicBean</Gerrit-PluginName>
+              <Gerrit-SshModule>com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean.SshModule</Gerrit-SshModule>
+
+              <Implementation-Vendor>Gerrit Code Review</Implementation-Vendor>
+              <Implementation-URL>https://gerrit-review.googlesource.com/#/admin/projects/plugins/examples</Implementation-URL>
+
+              <Implementation-Title>Example SSH Command Delegate Dynamic Bean</Implementation-Title>
+              <Implementation-Version>${project.version}</Implementation-Version>
+
+              <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType>
+              <Gerrit-ApiVersion>${Gerrit-ApiVersion}</Gerrit-ApiVersion>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.3.2</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+          <encoding>UTF-8</encoding>
+        </configuration>
+      </plugin>
+    </plugins>
+
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.google.gerrit</groupId>
+      <artifactId>gerrit-${Gerrit-ApiType}-api</artifactId>
+      <version>${Gerrit-ApiVersion}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <repositories>
+    <repository>
+      <id>maven.org</id>
+      <url>http://repo1.maven.org/maven2</url>
+    </repository>
+  </repositories>
+</project>
diff --git a/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCapability.java b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCapability.java
new file mode 120000
index 0000000..89edecb
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCapability.java
@@ -0,0 +1 @@
+../../../../../../../../../../example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCapability.java
\ No newline at end of file
diff --git a/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
new file mode 120000
index 0000000..0b87e21
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
@@ -0,0 +1 @@
+../../../../../../../../../../example-adminSshCommand/src/main/java/com/googlesource/gerrit/plugins/examples/adminsshcommand/AdminExampleCommand.java
\ No newline at end of file
diff --git a/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleCapability.java b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleCapability.java
new file mode 100644
index 0000000..b4f5b93
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleCapability.java
@@ -0,0 +1,26 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// 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.
+
+package com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean;
+
+import com.google.gerrit.extensions.config.CapabilityDefinition;
+
+class AdminExampleCapability extends CapabilityDefinition {
+  static final String ADMIN_EXAMPLE = "adminExample";
+
+  @Override
+  public String getDescription() {
+    return "Administrate Example";
+  }
+}
diff --git a/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleOptions.java b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleOptions.java
new file mode 100644
index 0000000..6c759c6
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/AdminExampleOptions.java
@@ -0,0 +1,50 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// 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.
+
+package com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean;
+
+import com.google.gerrit.server.DynamicOptions;
+import com.googlesource.gerrit.plugins.examples.adminsshcommand.AdminExampleCommand;
+import org.kohsuke.args4j.Option;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AdminExampleOptions
+    implements DynamicOptions.DynamicBean, DynamicOptions.BeanParseListener {
+  private final Logger log = LoggerFactory.getLogger(AdminExampleOptions.class);
+
+  private int count = 0;
+  private boolean countSet = false;
+
+  @Option(
+    name = "--repeat",
+    aliases = {"-r"},
+    usage = "Run the command multiple times"
+  )
+  private void parse(String arg) {
+    count = Integer.parseInt(arg);
+    countSet = true;
+  }
+
+  @Override
+  public void onBeanParseStart(String plugin, Object bean) {}
+
+  @Override
+  public void onBeanParseEnd(String plugin, Object bean) {
+    AdminExampleCommand cmd = (AdminExampleCommand) bean;
+    if (countSet) {
+      cmd.setCount(count);
+    }
+  }
+}
diff --git a/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/SshModule.java b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/SshModule.java
new file mode 100644
index 0000000..fcb3699
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/java/com/googlesource/gerrit/plugins/examples/sshcommanddelegatedynamicbean/SshModule.java
@@ -0,0 +1,29 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// 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.
+
+package com.googlesource.gerrit.plugins.examples.sshcommanddelegatedynamicbean;
+
+import com.google.gerrit.extensions.annotations.Exports;
+import com.google.gerrit.server.DynamicOptions;
+import com.google.inject.AbstractModule;
+import com.googlesource.gerrit.plugins.examples.adminsshcommand.AdminExampleCommand;
+
+public class SshModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    bind(DynamicOptions.DynamicBean.class)
+        .annotatedWith(Exports.named(AdminExampleCommand.class))
+        .to(AdminExampleOptions.class);
+  }
+}
diff --git a/example-sshCommandDelegateDynamicBean/src/main/resources/Documentation/about.md b/example-sshCommandDelegateDynamicBean/src/main/resources/Documentation/about.md
new file mode 100644
index 0000000..432e58c
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/src/main/resources/Documentation/about.md
@@ -0,0 +1 @@
+Sample plugin that shows how to extend a command from another plugin by adding a repeat option to the admin command from the example-adminSshCommand plugin.
diff --git a/example-sshCommandDelegateDynamicBean/tools/bazel.rc b/example-sshCommandDelegateDynamicBean/tools/bazel.rc
new file mode 100644
index 0000000..4ed16cf
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/tools/bazel.rc
@@ -0,0 +1,2 @@
+build --workspace_status_command=./tools/workspace-status.sh
+test --build_tests_only
diff --git a/example-sshCommandDelegateDynamicBean/tools/bzl/BUILD b/example-sshCommandDelegateDynamicBean/tools/bzl/BUILD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/tools/bzl/BUILD
diff --git a/example-sshCommandDelegateDynamicBean/tools/bzl/plugin.bzl b/example-sshCommandDelegateDynamicBean/tools/bzl/plugin.bzl
new file mode 100644
index 0000000..2b1df8c
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/tools/bzl/plugin.bzl
@@ -0,0 +1,4 @@
+load(
+    "@com_googlesource_gerrit_bazlets//:gerrit_plugin.bzl",
+    "gerrit_plugin",
+)
diff --git a/example-sshCommandDelegateDynamicBean/tools/workspace-status.sh b/example-sshCommandDelegateDynamicBean/tools/workspace-status.sh
new file mode 100755
index 0000000..f31812c
--- /dev/null
+++ b/example-sshCommandDelegateDynamicBean/tools/workspace-status.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# This script will be run by bazel when the build process starts to
+# generate key-value information that represents the status of the
+# workspace. The output should be like
+#
+# KEY1 VALUE1
+# KEY2 VALUE2
+#
+# If the script exits with non-zero code, it's considered as a failure
+# and the output will be discarded.
+
+function rev() {
+  git describe --always --match "v[0-9].*" --dirty
+}
+
+echo STABLE_BUILD_EXAMPLE-SSHCOMMANDDELEGATEDYNAMICBEAN_LABEL $(rev)
