code: public TypedLinkFacet withAttributes(TypedLinkAttributeDefinition... attributes) {
          if (this.attributes == null) {
              setAttributes(new java.util.ArrayList<TypedLinkAttributeDefinition>(attributes.length));
          }
          for (TypedLinkAttributeDefinition ele : attributes) {
              this.attributes.add(ele);
          }
          return this;
      }
docs: <p>
  A set of key-value pairs associated with the typed link. Typed link attributes are used when you have data values
  that are related to the link itself, and not to one of the two objects being linked. Identity attributes also
  serve to distinguish the link from others of the same type between the same objects.
  </p>
  <p>
  <b>NOTE:</b> This method appends the values to the existing list (if any). Use
  {@link #setAttributes(java.util.Collection)} or {@link #withAttributes(java.util.Collection)} if you want to
  override the existing values.
  </p>
  
  @param attributes
  A set of key-value pairs associated with the typed link. Typed link attributes are used when you have data
  values that are related to the link itself, and not to one of the two objects being linked. Identity
  attributes also serve to distinguish the link from others of the same type between the same objects.
  @return Returns a reference to this object so that method calls can be chained together.