#
# 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 current 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.
#
org.apache.tamaya.core.internal.converters.BooleanConverter
org.apache.tamaya.core.internal.converters.ByteConverter
org.apache.tamaya.core.internal.converters.CharConverter
org.apache.tamaya.core.internal.converters.ClassConverter
org.apache.tamaya.core.internal.converters.DoubleConverter
org.apache.tamaya.core.internal.converters.FloatConverter
org.apache.tamaya.core.internal.converters.IntegerConverter
org.apache.tamaya.core.internal.converters.LongConverter
org.apache.tamaya.core.internal.converters.ShortConverter
org.apache.tamaya.core.internal.converters.BigDecimalConverter
org.apache.tamaya.core.internal.converters.BigIntegerConverter
org.apache.tamaya.core.internal.converters.CurrencyConverter
org.apache.tamaya.core.internal.converters.MonthDayConverter
org.apache.tamaya.core.internal.converters.NumberConverter
org.apache.tamaya.core.internal.converters.URIConverter
org.apache.tamaya.core.internal.converters.URLConverter
org.apache.tamaya.core.internal.converters.FileConverter
org.apache.tamaya.core.internal.converters.PathConverter
org.apache.tamaya.core.internal.converters.DurationConverter
org.apache.tamaya.core.internal.converters.LocalDateConverter
org.apache.tamaya.core.internal.converters.LocalDateTimeConverter
org.apache.tamaya.core.internal.converters.LocalTimeConverter
org.apache.tamaya.core.internal.converters.OffsetDateTimeConverter
org.apache.tamaya.core.internal.converters.OffsetTimeConverter
org.apache.tamaya.core.internal.converters.InstantConverter
org.apache.tamaya.core.internal.converters.OptionalConverter
org.apache.tamaya.core.internal.converters.SupplierConverter
org.apache.tamaya.core.internal.converters.YearConverter
org.apache.tamaya.core.internal.converters.YearMonthConverter
