<?xml version="1.0"?>
<!-- Licensed 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.
  See accompanying LICENSE file. -->
<!DOCTYPE module PUBLIC
  "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
  "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
  <module name="TreeWalker">
    <module name="FallThrough"/>

    <!-- imports -->
    <module name="AvoidStarImport"/>
    <module name="IllegalImport"/>
    <module name="ImportOrder">
      <property name="groups" value="java,javax,org,com,*"/>
      <property name="ordered" value="true"/>
      <property name="separated" value="true"/>
      <property name="option" value="top"/> <!-- static imports -->
      <property name="sortStaticImportsAlphabetically" value="true"/>
    </module>
    <module name="RedundantImport"/>
    <module name="UnusedImports"/>

    <!-- blocks -->
    <module name="AvoidNestedBlocks">
      <property name="allowInSwitchCase" value="true"/>
    </module>
    <module name="EmptyBlock">
      <property name="option" value="text"/>
    </module>
  </module>
</module>
