public static function fromModel(StatementModel $model)
 {
     $statement = new self();
     $statement->id = $model->getId()->getValue();
     $statement->actor = Object::fromModel($model->getActor());
     $statement->verb = Verb::fromModel($model->getVerb());
     $statement->object = Object::fromModel($model->getObject());
     if (null !== $model->getTimestamp()) {
         $statement->created = $model->getTimestamp()->getTimestamp();
     }
     if (null !== ($result = $model->getResult())) {
         $statement->result = Result::fromModel($result);
     }
     if (null !== ($authority = $model->getAuthority())) {
         $statement->authority = Object::fromModel($authority);
     }
     if (null !== ($context = $model->getContext())) {
         $statement->context = Context::fromModel($context);
     }
     if (null !== ($attachments = $model->getAttachments())) {
         $statement->hasAttachments = true;
         $statement->attachments = array();
         foreach ($attachments as $attachment) {
             $mappedAttachment = Attachment::fromModel($attachment);
             $mappedAttachment->statement = $statement;
             $statement->attachments[] = $mappedAttachment;
         }
     } else {
         $statement->hasAttachments = false;
     }
     return $statement;
 }
 public static function createFromModel(Statement $statement)
 {
     $mappedStatement = new MappedStatement();
     $mappedStatement->id = $statement->getId();
     $mappedStatement->actor = $statement->getActor();
     $mappedStatement->verb = MappedVerb::createFromModel($statement->getVerb());
     $mappedStatement->object = $statement->getObject();
     $mappedStatement->result = $statement->getResult();
     $mappedStatement->authority = $statement->getAuthority();
     $mappedStatement->created = $statement->getCreated();
     $mappedStatement->stored = $statement->getStored();
     return $mappedStatement;
 }
 private function assertStatementEquals(Statement $expected, Statement $actual, $validateId = true)
 {
     if ($validateId) {
         $this->assertSame($expected->getId(), $actual->getId());
     }
     $this->assertTrue($actual->getActor()->equals($expected->getActor()));
     $this->assertTrue($actual->getVerb()->equals($expected->getVerb()));
     $this->assertTrue($actual->getObject()->equals($expected->getObject()));
     if (null === $expected->getResult()) {
         $this->assertNull($actual->getResult());
     } else {
         $this->assertTrue($actual->getResult()->equals($expected->getResult()));
     }
     if (null === $expected->getAuthority()) {
         $this->assertNull($actual->getAuthority());
     } else {
         $this->assertTrue($actual->getAuthority()->equals($expected->getAuthority()));
     }
 }