code: public Projection withNonKeyAttributes(String... nonKeyAttributes) {
          if (this.nonKeyAttributes == null) {
              setNonKeyAttributes(new java.util.ArrayList<String>(nonKeyAttributes.length));
          }
          for (String ele : nonKeyAttributes) {
              this.nonKeyAttributes.add(ele);
          }
          return this;
      }
docs: <p>
  Represents the non-key attribute names which will be projected into the index.
  </p>
  <p>
  For local secondary indexes, the total count of <code>NonKeyAttributes</code> summed across all of the local
  secondary indexes, must not exceed 20. If you project the same attribute into two different indexes, this counts
  as two distinct attributes when determining the total.
  </p>
  <p>
  <b>NOTE:</b> This method appends the values to the existing list (if any). Use
  {@link #setNonKeyAttributes(java.util.Collection)} or {@link #withNonKeyAttributes(java.util.Collection)} if you
  want to override the existing values.
  </p>
  
  @param nonKeyAttributes
  Represents the non-key attribute names which will be projected into the index.</p>
  <p>
  For local secondary indexes, the total count of <code>NonKeyAttributes</code> summed across all of the
  local secondary indexes, must not exceed 20. If you project the same attribute into two different indexes,
  this counts as two distinct attributes when determining the total.
  @return Returns a reference to this object so that method calls can be chained together.