Refactored AbstractMongoObject using ObjectGatewayCriteria