METAREST-2 Moves all determination of annotated properties to protected functions so the logic can be overriden