/**
  * @return array
  */
 public function jsonSerialize()
 {
     $json = parent::jsonSerialize();
     if (0 < count($this->link)) {
         $json['link'] = array();
         foreach ($this->link as $link) {
             $json['link'][] = $link->jsonSerialize();
         }
     }
     if (null !== $this->fullUrl) {
         $json['fullUrl'] = $this->fullUrl->jsonSerialize();
     }
     if (null !== $this->resource) {
         $json['resource'] = $this->resource->jsonSerialize();
     }
     if (null !== $this->search) {
         $json['search'] = $this->search->jsonSerialize();
     }
     if (null !== $this->request) {
         $json['request'] = $this->request->jsonSerialize();
     }
     if (null !== $this->response) {
         $json['response'] = $this->response->jsonSerialize();
     }
     return $json;
 }
 /**
  * @return array
  */
 public function jsonSerialize()
 {
     $json = parent::jsonSerialize();
     if (null !== $this->name) {
         $json['name'] = $this->name->jsonSerialize();
     }
     if (null !== $this->valueBoolean) {
         $json['valueBoolean'] = $this->valueBoolean->jsonSerialize();
     }
     if (null !== $this->valueInteger) {
         $json['valueInteger'] = $this->valueInteger->jsonSerialize();
     }
     if (null !== $this->valueDecimal) {
         $json['valueDecimal'] = $this->valueDecimal->jsonSerialize();
     }
     if (null !== $this->valueBase64Binary) {
         $json['valueBase64Binary'] = $this->valueBase64Binary->jsonSerialize();
     }
     if (null !== $this->valueInstant) {
         $json['valueInstant'] = $this->valueInstant->jsonSerialize();
     }
     if (null !== $this->valueString) {
         $json['valueString'] = $this->valueString->jsonSerialize();
     }
     if (null !== $this->valueUri) {
         $json['valueUri'] = $this->valueUri->jsonSerialize();
     }
     if (null !== $this->valueDate) {
         $json['valueDate'] = $this->valueDate->jsonSerialize();
     }
     if (null !== $this->valueDateTime) {
         $json['valueDateTime'] = $this->valueDateTime->jsonSerialize();
     }
     if (null !== $this->valueTime) {
         $json['valueTime'] = $this->valueTime->jsonSerialize();
     }
     if (null !== $this->valueCode) {
         $json['valueCode'] = $this->valueCode->jsonSerialize();
     }
     if (null !== $this->valueOid) {
         $json['valueOid'] = $this->valueOid->jsonSerialize();
     }
     if (null !== $this->valueUuid) {
         $json['valueUuid'] = $this->valueUuid->jsonSerialize();
     }
     if (null !== $this->valueId) {
         $json['valueId'] = $this->valueId->jsonSerialize();
     }
     if (null !== $this->valueUnsignedInt) {
         $json['valueUnsignedInt'] = $this->valueUnsignedInt->jsonSerialize();
     }
     if (null !== $this->valuePositiveInt) {
         $json['valuePositiveInt'] = $this->valuePositiveInt->jsonSerialize();
     }
     if (null !== $this->valueMarkdown) {
         $json['valueMarkdown'] = $this->valueMarkdown->jsonSerialize();
     }
     if (null !== $this->valueAnnotation) {
         $json['valueAnnotation'] = $this->valueAnnotation->jsonSerialize();
     }
     if (null !== $this->valueAttachment) {
         $json['valueAttachment'] = $this->valueAttachment->jsonSerialize();
     }
     if (null !== $this->valueIdentifier) {
         $json['valueIdentifier'] = $this->valueIdentifier->jsonSerialize();
     }
     if (null !== $this->valueCodeableConcept) {
         $json['valueCodeableConcept'] = $this->valueCodeableConcept->jsonSerialize();
     }
     if (null !== $this->valueCoding) {
         $json['valueCoding'] = $this->valueCoding->jsonSerialize();
     }
     if (null !== $this->valueQuantity) {
         $json['valueQuantity'] = $this->valueQuantity->jsonSerialize();
     }
     if (null !== $this->valueRange) {
         $json['valueRange'] = $this->valueRange->jsonSerialize();
     }
     if (null !== $this->valuePeriod) {
         $json['valuePeriod'] = $this->valuePeriod->jsonSerialize();
     }
     if (null !== $this->valueRatio) {
         $json['valueRatio'] = $this->valueRatio->jsonSerialize();
     }
     if (null !== $this->valueReference) {
         $json['valueReference'] = $this->valueReference->jsonSerialize();
     }
     if (null !== $this->valueSampledData) {
         $json['valueSampledData'] = $this->valueSampledData->jsonSerialize();
     }
     if (null !== $this->valueSignature) {
         $json['valueSignature'] = $this->valueSignature->jsonSerialize();
     }
     if (null !== $this->valueHumanName) {
         $json['valueHumanName'] = $this->valueHumanName->jsonSerialize();
     }
     if (null !== $this->valueAddress) {
         $json['valueAddress'] = $this->valueAddress->jsonSerialize();
     }
     if (null !== $this->valueContactPoint) {
         $json['valueContactPoint'] = $this->valueContactPoint->jsonSerialize();
     }
     if (null !== $this->valueTiming) {
         $json['valueTiming'] = $this->valueTiming->jsonSerialize();
     }
     if (null !== $this->valueMeta) {
         $json['valueMeta'] = $this->valueMeta->jsonSerialize();
     }
     if (null !== $this->valueElementDefinition) {
         $json['valueElementDefinition'] = $this->valueElementDefinition->jsonSerialize();
     }
     if (null !== $this->resource) {
         $json['resource'] = $this->resource->jsonSerialize();
     }
     if (0 < count($this->part)) {
         $json['part'] = array();
         foreach ($this->part as $part) {
             $json['part'][] = $part->jsonSerialize();
         }
     }
     return $json;
 }