/** Define a property on the last relationship of the chain. */
 public RelationshipsChainForGraphAssertions property(String name, Object value) {
   NextRelationship relationship = stream.get(stream.size() - 1);
   @SuppressWarnings("unchecked")
   Map<String, Object> properties = (Map<String, Object>) params.get(relationship.getAlias());
   if (properties == null) {
     params.put(relationship.getAlias(), relationship.getProperties());
   }
   relationship.addProperty(name, value);
   return this;
 }
 /**
  * Returns the cypher representation of the chain of relationships,
  * <p>
  * Example:
  * <pre>
  * (n1:ENTITY {id: {n1}.id}) -[r0:type0 {property: {r0}.property}]-> (n2:EMBEDDED {property: {n2}.property}) -[r1:type1]-> (n3:EMBEDDED)
  * <pre>
  */
 public String toCypher() {
   StringBuilder builder = new StringBuilder();
   builder.append(start.toCypher());
   for (NextRelationship relationship : stream) {
     builder.append(" -[");
     if (!relationship.getProperties().isEmpty()) {
       builder.append(relationship.getAlias());
     }
     builder.append(":");
     builder.append(relationship.getRelationshipType());
     if (!relationship.getProperties().isEmpty()) {
       builder.append(" {");
       boolean first = true;
       for (String property : relationship.getProperties().keySet()) {
         if (first) {
           first = false;
         } else {
           builder.append(", ");
         }
         escapeIdentifier(builder, property);
         builder.append(": {");
         builder.append(relationship.getAlias());
         builder.append("}.");
         escapeIdentifier(builder, property);
       }
       builder.append(" }");
     }
     builder.append("]-> ");
     builder.append(relationship.getEnd().toCypher());
   }
   return builder.toString();
 }