docs: function addNodeToStatement(neode, builder, alias, model, properties) {
      var aliases = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
      var mode = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 'create';
      var merge_on = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : [];
  
      // Split Properties
      var _splitProperties = splitProperties(mode, model, properties, merge_on),
          inline = _splitProperties.inline,
          on_create = _splitProperties.on_create,
          on_match = _splitProperties.on_match,
          set = _splitProperties.set;
  
      // Add alias
  
  
      if (aliases.indexOf(alias) == -1) {
          aliases.push(alias);
      }
  
      // Create
      builder[mode](alias, model, inline);
  
      // On create set
      if (Object.keys(on_create).length) {
          Object.entries(on_create).forEach(function (_ref) {
              var _ref2 = _slicedToArray(_ref, 2),
                  key = _ref2[0],
                  value = _ref2[1];
  
              builder.onCreateSet(alias + '.' + key, value);
          });
      }
  
      // On Match Set
      if (Object.keys(on_match).length) {
          Object.entries(on_match).forEach(function (_ref3) {
              var _ref4 = _slicedToArray(_ref3, 2),
                  key = _ref4[0],
                  value = _ref4[1];
  
              builder.onCreateSet(alias + '.' + key, value);
          });
      }
  
      // Set
      if (Object.keys(set).length) {
          Object.entries(set).forEach(function (_ref5) {
              var _ref6 = _slicedToArray(_ref5, 2),
                  key = _ref6[0],
                  value = _ref6[1];
  
              builder.set(alias + '.' + key, value);
          });
      }
  
      // Relationships
      model.relationships().forEach(function (relationship, key) {
          if (properties.hasOwnProperty(key)) {
              var value = properties[key];
  
              var rel_alias = alias + '_' + key + '_rel';
              var target_alias = alias + '_' + key + '_node';
  
              // Carry alias through
              builder.with.apply(builder, _toConsumableArray(aliases));
  
              if (!relationship.target()) {
                  throw new Error('A target defintion must be defined for ' + key + ' on model ' + model.name());
              } else if (Array.isArray(relationship.target())) {
                  throw new Error('You cannot create a node with the ambiguous relationship: ' + key + ' on model ' + model.name());
              }
  
              switch (relationship.type()) {
                  // Single Relationship
                  case 'relationship':
                      addRelationshipToStatement(neode, builder, alias, rel_alias, target_alias, relationship, value, aliases, mode);
                      break;
  
                  // Array of Relationships
                  case 'relationships':
                      if (!Array.isArray(value)) value = [value];
  
                      value.forEach(function (value, idx) {
                          // Carry alias through
                          addRelationshipToStatement(neode, builder, alias, rel_alias + idx, target_alias + idx, relationship, value, aliases, mode);
                      });
                      break;
  
                  // Single Node
                  case 'node':
                      addNodeRelationshipToStatement(neode, builder, alias, rel_alias, target_alias, relationship, value, aliases, mode);
                      break;
  
                  // Array of Nodes
                  case 'nodes':
                      if (!Array.isArray(value)) value = [value];
  
                      value.forEach(function (value, idx) {
                          addNodeRelationshipToStatement(neode, builder, alias, rel_alias + idx, target_alias + idx, relationship, value, aliases, mode);
                      });
                      break;
              }
          }
      });
  
      return builder;
  }