///////////////////////////////////////////////////////////////
 * 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.
///////////////////////////////////////////////////////////////

[[reference-documentation,Reference Manual]]
= Qi4jv{revnumber} Reference Manual =

:qi4j-version: {revnumber}
:qi4j-buildnumber: {revnumber}
:qi4j-git-tag: {gitversion}


:leveloffset: 2

include:../../../core/api/src/docs/reference/api.txt[]

include:../../../core/spi/src/docs/reference/spi.txt[]

include:../../../core/bootstrap/src/docs/reference/bootstrap.txt[]

include:../../../core/testsupport/src/docs/reference/testsupport.txt[]
