{{## def.checkMissingProperty:_properties:

{{~ _properties:$propertyKey:$i }}
  {{?$i}} || {{?}}
  {{
    var $prop = it.util.getProperty($propertyKey)
      , $useData = $data + $prop;
  }}
  ( ({{# def.noPropertyInData }}) && (missing{{=$lvl}} = {{= it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop) }}) )
{{~}}

#}}

{{## def.errorMissingProperty:_error:

{{
  var $propertyPath = 'missing' + $lvl
    , $missingProperty = '\' + ' + $propertyPath + ' + \'';
  if (it.opts._errorDataPathProperty) {
    it.errorPath = it.opts.jsonPointers
                    ? it.util.getPathExpr($currentErrorPath,  $propertyPath, true)
                    : $currentErrorPath + ' + ' + $propertyPath;
  }
}}
{{# def.error:_error }}

#}}

{{## def.allErrorsMissingProperty:_error:

{{
  var $prop = it.util.getProperty($propertyKey)
    , $missingProperty = it.util.escapeQuotes($propertyKey)
    , $useData = $data + $prop;
  if (it.opts._errorDataPathProperty) {
    it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
  }
}}
if ({{# def.noPropertyInData }}) {
  {{# def.addError:_error }}
}

#}}