protected function IsStructuralTrait(StructuralTableTrait $OtherTrait) { if (count($this->Columns) !== count($OtherTrait->Columns)) { return false; } foreach ($this->Columns as $Key => $Column) { if ($Column->GetName() !== $OtherTrait->Columns[$Key]->GetName()) { return false; } if ($this->GetColumnDirection($Column) !== $OtherTrait->GetColumnDirection($OtherTrait->Columns[$Key])) { return false; } } return true; }