/**
  * Assert that the property information is matching.
  *
  * @param Property    $property               The property info to check.
  *
  * @param string      $name                   The property name.
  *
  * @param null|string $visibleConditionClass  The class for the visible condition.
  *
  * @param null|string $editableConditionClass The class for the editable condition.
  *
  * @return void
  */
 protected function assertProperty($property, $name, $visibleConditionClass = null, $editableConditionClass = null)
 {
     $this->assertEquals($name, $property->getName(), 'property name mismatch');
     if ($visibleConditionClass === null) {
         $this->assertNull($property->getVisibleCondition());
     } else {
         $this->assertInstanceOf($visibleConditionClass, $property->getVisibleCondition(), $property->getName() . ' getVisibleCondition()');
     }
     if ($editableConditionClass === null) {
         $this->assertNull($property->getEditableCondition());
     } else {
         $this->assertInstanceOf($editableConditionClass, $property->getEditableCondition(), $property->getName() . ' getVisibleCondition()');
     }
 }