<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->
<!DOCTYPE suppressions PUBLIC "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN" "https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
  <suppress checks="AbstractClassName" files=".*\/TestSupport\.java"/>
  <suppress checks="ExecutableStatementCount" files=".*\/SlingVersionResolver\.java"/>
  <suppress checks="JavaNCSS" files=".*\/SlingVersionResolver\.java"/>
  <suppress checks="MagicNumber" files=".*\/SlingOptions\.java"/>
  <suppress checks="MethodCount" files=".*\/SlingOptions\.java"/>
  <suppress checks="MethodLength" files=".*\/SlingVersionResolver\.java"/>
  <suppress checks="MissingJavadocMethod" files=".*\/SlingOptions\.java"/>
  <suppress checks="MultipleStringLiterals" files=".*\/SlingOptions\.java"/>
  <suppress checks="MultipleStringLiterals" files=".*\/SlingVersionResolver\.java"/>
  <suppress checks="OverloadMethodsDeclarationOrder" files=".*\/SlingOptions\.java"/>
  <suppress checks="ReturnCount" files=".*\/SlingOptions\.java"/>
  <suppress checks="ReturnCount" files=".*\/SlingVersionResolver\.java"/>
  <suppress checks="SeparatorWrap" files=".*\/SlingOptions\.java"/>
</suppressions>
