protected static function annotateSchema($schema, $annotation, $path = '')
	{
		if (isset($schema['type']) && !isset($schema['_annotation'])) {
			$schema['_annotation'] = $annotation;
		}

		foreach (['properties', 'patternProperties'] as $p) {
			if (isset($schema[$p])) {
				foreach($schema[$p] as $k => & $v) {
					$v = static::annotateSchema($v, $annotation, $path.'/'.$p.'/'.$k);
				}
			}
		}

		foreach (['items', 'additionalProperties'] as $p) {
			if (isset($schema[$p])) {
				$schema[$p] = static::annotateSchema($schema[$p], $annotation, $path.'/'.$p);
			}
		}

		return $schema;
	}