================================================================================
  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.
================================================================================

Best practice, fit in with the style that is already there. However, things have
evolved over time so there are some variations across the project; use your
judgement.

There is a validate build target that performs checks using tools like checkstyle.
This is off by default but can be enabled by setting "execute.validate=true" in
your build.properties file.

This directory contains support files for various IDEs that can help configure
your development environment.

Some guidelines:
* Do not rely on Java's autoboxing - perform conversions explicitly
