code: def validate_with_permissions(self, val, caller_permissions):
          
          self.validate(val)
          self.validate_fields_only_with_permissions(val, caller_permissions)
          return val
docs: For a val to pass validation, val must be of the correct type and have
          all required permissioned fields present. Should only be called
          for callers with extra permissions.