AnnotationLiteral.java

Licensed under the Apache License, Version 2.0.
File was copied from the javax.enterprise cdi-api version 1.0.

JBoss, Home of Professional Open Source
Copyright 2008, Red Hat Middleware LLC, and individual contributors
by the @authors tag.