/**
  * Sorts first by primary field, then sorts by property name alphabetically
  * @param Property $a
  * @param Property $b
  * @return int
  */
 protected static function sortByPrimaryAndPropertyNameValue(Property $a, Property $b)
 {
     if ($a->getPrimary() == $b->getPrimary()) {
         //primary field  is set to 1, all not-primary property objects have primary field set to 0.
         return $a->getPropertyName() < $b->getPropertyName() ? -1 : 1;
     }
     return $a->getPrimary() > $b->getPrimary() ? -1 : 1;
 }