code: public ComputeResource withInstanceTypes(String... instanceTypes) {
          if (this.instanceTypes == null) {
              setInstanceTypes(new java.util.ArrayList<String>(instanceTypes.length));
          }
          for (String ele : instanceTypes) {
              this.instanceTypes.add(ele);
          }
          return this;
      }
docs: <p>
  The instances types that may be launched. You can specify instance families to launch any instance type within
  those families (for example, <code>c4</code> or <code>p3</code>), or you can specify specific sizes within a
  family (such as <code>c4.8xlarge</code>). You can also choose <code>optimal</code> to pick instance types (from
  the C, M, and R instance families) on the fly that match the demand of your job queues.
  </p>
  <p>
  <b>NOTE:</b> This method appends the values to the existing list (if any). Use
  {@link #setInstanceTypes(java.util.Collection)} or {@link #withInstanceTypes(java.util.Collection)} if you want
  to override the existing values.
  </p>
  
  @param instanceTypes
  The instances types that may be launched. You can specify instance families to launch any instance type
  within those families (for example, <code>c4</code> or <code>p3</code>), or you can specify specific sizes
  within a family (such as <code>c4.8xlarge</code>). You can also choose <code>optimal</code> to pick
  instance types (from the C, M, and R instance families) on the fly that match the demand of your job
  queues.
  @return Returns a reference to this object so that method calls can be chained together.