code: public function replace(string $field, $value): self
      {
          if ('type' === $field) {
              return $this->putIdentifier($value, $this->id);
          }
  
          if ('id' === $field) {
              return $this->putIdentifier($this->type, $value);
          }
  
          if ($this->isAttribute($field)) {
              return $this->putAttr($field, $value);
          }
  
          if ($this->isRelationship($field)) {
              return $this->putRelation($field, $value);
          }
  
          throw new \OutOfBoundsException("Field {$field} is not an attribute or relationship.");
      }
docs: Return a new instance with a new attribute/relationship field value.
  
  The field must exist, otherwise it cannot be determined whether to replace
  either an attribute or a relationship.
  
  If the field is a relationship, the `data` member of that relationship will
  be replaced.
  
  @param string $field
  @param $value
  @return ResourceObject
  @throws \OutOfBoundsException if the field does not exist.