Changed self::SPECIFICATION_* to static::SPECIFICATION_* in non declarative lines in order to allow override when extending
Fixed missing self to static conversion
Added unit tests
Merge pull request #4907