<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Sun Apr 03 11:19:14 IST 2011 -->
<TITLE>
G-Index
</TITLE>

<META NAME="date" CONTENT="2011-04-03">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="G-Index";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="index-4.html"><B>PREV LETTER</B></A>&nbsp;
&nbsp;<A HREF="index-6.html"><B>NEXT LETTER</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../index.html?index-filesindex-5.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-5.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<A HREF="index-1.html">A</A> <A HREF="index-2.html">C</A> <A HREF="index-3.html">D</A> <A HREF="index-4.html">F</A> <A HREF="index-5.html">G</A> <A HREF="index-6.html">I</A> <A HREF="index-7.html">J</A> <A HREF="index-8.html">O</A> <A HREF="index-9.html">P</A> <A HREF="index-10.html">R</A> <A HREF="index-11.html">S</A> <A HREF="index-12.html">U</A> <A HREF="index-13.html">V</A> <A HREF="index-14.html">W</A> <HR>
<A NAME="_G_"><!-- --></A><H2>
<B>G</B></H2>
<DL>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotation(org.eclipse.jdt.core.IJavaElement, java.lang.Class)"><B>getAnnotation(IJavaElement, Class&lt;? extends Annotation&gt;)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the AST <CODE>Annotation</CODE> that corresponds to the given <CODE>Annotation</CODE> class
 on the <CODE>IJavaElement</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotation(com.sun.mirror.declaration.Declaration, java.lang.Class)"><B>getAnnotation(Declaration, Class&lt;? extends Annotation&gt;)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>AnnotationMirror</CODE> that corresponds to the given <CODE>Annotation</CODE> class
 on the <CODE>Declaration</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotation(java.lang.Class, org.eclipse.jdt.core.IAnnotatable)"><B>getAnnotation(Class&lt;? extends Annotation&gt;, IAnnotatable)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the JDT <CODE>IAnnotation</CODE> that corresponds to the given <CODE>Annotation</CODE> class
 on the <CODE>IAnnotatable</CODE> element.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationAttributeInitializer()"><B>getAnnotationAttributeInitializer()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns the annotations attribute initializer as specified in the
 <code>org.eclipse.jst.ws.annotations.core.annotationInitializer</code> extension point or null if no
 initializer can be found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationAttributeInitializerForName(org.eclipse.jdt.core.dom.Name)"><B>getAnnotationAttributeInitializerForName(Name)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns the <A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html" title="interface in org.eclipse.jst.ws.annotations.core.initialization"><CODE>IAnnotationAttributeInitializer</CODE></A> for the given <CODE>Name</CODE>
 or null if none can be found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationCategories()"><B>getAnnotationCategories()</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns a list of the annotation categories.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationClass()"><B>getAnnotationClass()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD><B>Deprecated.</B>&nbsp;<I>As of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationType()"><CODE>AnnotationDefinition.getAnnotationType()</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationClassName()"><B>getAnnotationClassName()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns the fully qualified class name of the annotation.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationDefinitionForClass(java.lang.Class)"><B>getAnnotationDefinitionForClass(Class&lt;? extends Annotation&gt;)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns the <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core"><CODE>AnnotationDefinition</CODE></A> for the given <CODE>Annotation</CODE> class
 or null if no annotation definition can be found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationDefinitionForClass(java.lang.String)"><B>getAnnotationDefinitionForClass(String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns the <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core"><CODE>AnnotationDefinition</CODE></A> for the given fully qualified <CODE>Annotation</CODE> class
 name or null if no annotation definition can be found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationDefinitionForType(org.eclipse.jdt.core.IType)"><B>getAnnotationDefinitionForType(IType)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns the <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core"><CODE>AnnotationDefinition</CODE></A> for the given <CODE>IType</CODE>
 or null if no annotation definition can be found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotationName(org.eclipse.jdt.core.dom.Annotation)"><B>getAnnotationName(Annotation)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the annotations type name.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationProcessorsCache()"><B>getAnnotationProcessorsCache()</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotations()"><B>getAnnotations()</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns a list of <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core"><CODE>AnnotationDefinition</CODE></A> constructed from contributions to the
 <code>org.eclipse.jst.ws.annotations.core.annotationDefinition</code> extension point.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotations(org.eclipse.jdt.core.IJavaElement)"><B>getAnnotations(IJavaElement)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD><B>Deprecated.</B>&nbsp;<I>As of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationTypes(org.eclipse.jdt.core.IJavaElement)"><CODE>AnnotationsManager.getAnnotationTypes(IJavaElement)</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotations(org.eclipse.jdt.core.IJavaElement)"><B>getAnnotations(IJavaElement)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns a list of all the <CODE>Annotation</CODE> that are present on the given <CODE>IJavaElement</CODE>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationsByCategory(java.lang.String)"><B>getAnnotationsByCategory(String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns a list of all the <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core"><CODE>AnnotationDefinition</CODE></A> with the given annotation category name.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationType()"><B>getAnnotationType()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns the annotation type as specified by the <code>class</code> attribute of the
 <code>annotation<annotation> element in the <code>org.eclipse.jst.ws.annotations.core.annotationDefinition</code>
 extension point.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html#getAnnotationTypes(org.eclipse.jdt.core.IJavaElement)"><B>getAnnotationTypes(IJavaElement)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationsManager.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationsManager</A>
<DD>Returns a list of all the contributed annotations that target the given <CODE>IJavaElement</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationTypeTargets()"><B>getAnnotationTypeTargets()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns a list of <CODE>ElementType</CODE> that specify the Java elements to which the annotation can be applied.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotationValue(com.sun.mirror.declaration.AnnotationMirror, java.lang.String)"><B>getAnnotationValue(AnnotationMirror, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>AnnotationValue</CODE> with the given member name that is declared within the <CODE>AnnotationMirror</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotationValue(org.eclipse.jdt.core.dom.NormalAnnotation, java.lang.String)"><B>getAnnotationValue(NormalAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>NormalAnnotation</CODE> member value pair value with the given member name.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getAnnotationValue(org.eclipse.jdt.core.IAnnotation, java.lang.String)"><B>getAnnotationValue(IAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the JDT <CODE>IAnnotation</CODE> member value pair value with the given member name.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getBooleanValue(com.sun.mirror.declaration.AnnotationMirror, java.lang.String)"><B>getBooleanValue(AnnotationMirror, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>AnnotationMirror</CODE> as a <CODE>Boolean</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getBooleanValue(org.eclipse.jdt.core.dom.Annotation, java.lang.String)"><B>getBooleanValue(Annotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>Annotation</CODE> as a <CODE>Boolean</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getBooleanValue(org.eclipse.jdt.core.IAnnotation, java.lang.String)"><B>getBooleanValue(IAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the  member value with the given member name from the <CODE>IAnnotation</CODE> as a <CODE>Boolean</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getCategory()"><B>getCategory()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns the category the annotation belongs to.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getCompilationUnitFromJavaElement(org.eclipse.jdt.core.IJavaElement)"><B>getCompilationUnitFromJavaElement(IJavaElement)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns a <CODE>ICompilationUnit</CODE> for the given <CODE>IJavaElement</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html#getCompletionProposalsForMemberValuePair(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.MemberValuePair)"><B>getCompletionProposalsForMemberValuePair(IJavaElement, MemberValuePair)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">AnnotationAttributeInitializer</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html#getCompletionProposalsForMemberValuePair(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.MemberValuePair)"><B>getCompletionProposalsForMemberValuePair(IJavaElement, MemberValuePair)</B></A> - 
Method in interface org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html" title="interface in org.eclipse.jst.ws.annotations.core.initialization">IAnnotationAttributeInitializer</A>
<DD>Used to provide a list of <CODE>ICompletionProposal</CODE> for a <CODE>MemberValuePair</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html#getCompletionProposalsForSingleMemberAnnotation(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.SingleMemberAnnotation)"><B>getCompletionProposalsForSingleMemberAnnotation(IJavaElement, SingleMemberAnnotation)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">AnnotationAttributeInitializer</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html#getCompletionProposalsForSingleMemberAnnotation(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.SingleMemberAnnotation)"><B>getCompletionProposalsForSingleMemberAnnotation(IJavaElement, SingleMemberAnnotation)</B></A> - 
Method in interface org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html" title="interface in org.eclipse.jst.ws.annotations.core.initialization">IAnnotationAttributeInitializer</A>
<DD>Used to provide a list of <CODE>ICompletionProposal</CODE> for a <CODE>SingleMemberAnnotation</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getEndpointAddress(javax.wsdl.Definition)"><B>getEndpointAddress(Definition)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Returns the first <code>SOAPAddress</code> or <code>SOAP12Address</code> found in the given
 <code>Definition</code> or null if none is found.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getEnumValue(org.eclipse.jdt.core.dom.Annotation, java.lang.String)"><B>getEnumValue(Annotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>Annotation</CODE> as a <CODE>String</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getEnumValue(org.eclipse.jdt.core.IAnnotation, java.lang.String)"><B>getEnumValue(IAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>IAnnotation</CODE> as a <CODE>String</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getFieldDeclaration(org.eclipse.jdt.core.IField)"><B>getFieldDeclaration(IField)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>FieldDeclaration</CODE> that corresponds to the given <CODE>IField</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProject(java.lang.String)"><B>getJavaProject(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the Java project corresponding to the given project name.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProjectOutputDirectoryPath(org.eclipse.jdt.core.IJavaProject)"><B>getJavaProjectOutputDirectoryPath(IJavaProject)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the absolute path in the local file system of the default output location for the given java project.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProjectOutputDirectoryPath(java.lang.String)"><B>getJavaProjectOutputDirectoryPath(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the absolute path in the local file system of the default output location for the given java project name.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProjectSourceDirectoryPath(org.eclipse.jdt.core.IType)"><B>getJavaProjectSourceDirectoryPath(IType)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the full, absolute path relative to the workspace of the source folder that contains the given type.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProjectSourceDirectoryPath(java.lang.String)"><B>getJavaProjectSourceDirectoryPath(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the full, absolute path relative to the workspace of the first source folder found in the java project with the given name.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getJavaProjectSourceDirectoryPath(org.eclipse.jdt.core.IJavaProject)"><B>getJavaProjectSourceDirectoryPath(IJavaProject)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Returns the full, absolute path relative to the workspace of the first source folder found in the given java project.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getLocalVariable(org.eclipse.jdt.core.IMethod, int)"><B>getLocalVariable(IMethod, int)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>ILocalVariable</CODE> at the given offset position in the source file.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getLocalVariable(org.eclipse.jdt.core.IMethod, java.lang.String)"><B>getLocalVariable(IMethod, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>ILocalVariable</CODE> with the given name within the declared <CODE>IMethod</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getMemberValuePair(org.eclipse.jdt.core.dom.NormalAnnotation, java.lang.String)"><B>getMemberValuePair(NormalAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>MemberValuePair</CODE> with the given member name from the <CODE>NormalAnnotation</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, java.lang.Class)"><B>getMemberValuePairs(IJavaElement, AST, Class&lt;? extends Annotation&gt;)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">AnnotationAttributeInitializer</A>
<DD><B>Deprecated.</B>&nbsp;<I>as of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><CODE>AnnotationAttributeInitializer.getMemberValuePairs(IJavaElement, AST, IType)</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><B>getMemberValuePairs(IJavaElement, AST, IType)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">AnnotationAttributeInitializer</A>
<DD>&nbsp;
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/DefaultsAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, java.lang.Class)"><B>getMemberValuePairs(IJavaElement, AST, Class&lt;? extends Annotation&gt;)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/DefaultsAnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">DefaultsAnnotationAttributeInitializer</A>
<DD><B>Deprecated.</B>&nbsp;<I>as of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/initialization/DefaultsAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><CODE>DefaultsAnnotationAttributeInitializer.getMemberValuePairs(IJavaElement, AST, IType)</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/DefaultsAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><B>getMemberValuePairs(IJavaElement, AST, IType)</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/DefaultsAnnotationAttributeInitializer.html" title="class in org.eclipse.jst.ws.annotations.core.initialization">DefaultsAnnotationAttributeInitializer</A>
<DD>Constructs a list of <CODE>MemberValuePair</CODE> from the annotation type element names and default values.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, java.lang.Class)"><B>getMemberValuePairs(IJavaElement, AST, Class&lt;? extends Annotation&gt;)</B></A> - 
Method in interface org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html" title="interface in org.eclipse.jst.ws.annotations.core.initialization">IAnnotationAttributeInitializer</A>
<DD><B>Deprecated.</B>&nbsp;<I>as of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><CODE>IAnnotationAttributeInitializer.getMemberValuePairs(IJavaElement, AST, IType)</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html#getMemberValuePairs(org.eclipse.jdt.core.IJavaElement, org.eclipse.jdt.core.dom.AST, org.eclipse.jdt.core.IType)"><B>getMemberValuePairs(IJavaElement, AST, IType)</B></A> - 
Method in interface org.eclipse.jst.ws.annotations.core.initialization.<A HREF="../org/eclipse/jst/ws/annotations/core/initialization/IAnnotationAttributeInitializer.html" title="interface in org.eclipse.jst.ws.annotations.core.initialization">IAnnotationAttributeInitializer</A>
<DD>Returns a list of <CODE>MemberValuePair</CODE> that may be added to a <CODE>NormalAnnotation</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getMethodDeclaration(org.eclipse.jdt.core.IMethod)"><B>getMethodDeclaration(IMethod)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>MethodDeclaration</CODE> that corresponds to the given <CODE>IMethod</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getName()"><B>getName()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD>Returns the annotation name.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getPackageNameFromNamespace(java.lang.String)"><B>getPackageNameFromNamespace(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Constructs a dot separated package name from a given namespace.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getPublicMethods(org.eclipse.jdt.core.IType)"><B>getPublicMethods(IType)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>If the given <code>IType</code> is an interface all methods declared in that interface are returned.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getSingleVariableDeclaration(org.eclipse.jdt.core.ILocalVariable)"><B>getSingleVariableDeclaration(ILocalVariable)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>SingleVariableDeclaration</CODE> that corresponds to the given <CODE>ILocalVariable</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getSingleVariableDeclarations(org.eclipse.jdt.core.IMethod)"><B>getSingleVariableDeclarations(IMethod)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns a list of all the <CODE>SingleVariableDeclaration</CODE> for the given <CODE>IMethod</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getStringValue(com.sun.mirror.declaration.AnnotationMirror, java.lang.String)"><B>getStringValue(AnnotationMirror, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>AnnotationMirror</CODE> as a <CODE>String</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getStringValue(org.eclipse.jdt.core.dom.Annotation, java.lang.String)"><B>getStringValue(Annotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>Annotation</CODE> as a <CODE>String</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getStringValue(org.eclipse.jdt.core.IAnnotation, java.lang.String)"><B>getStringValue(IAnnotation, String)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the member value with the given member name from the <CODE>IAnnotation</CODE> as a <CODE>String</CODE> value.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html#getTargetNamespaceFromPackageName(java.lang.String)"><B>getTargetNamespaceFromPackageName(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/JDTUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">JDTUtils</A>
<DD>Constructs a target namespace string from the given package name by splitting the dot '.' separated
 package name, reversing the order of the package name segments followed by prefixing the string with
 'http://' and appending a forward slash '/' to the end.
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getTargets()"><B>getTargets()</B></A> - 
Method in class org.eclipse.jst.ws.annotations.core.<A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html" title="class in org.eclipse.jst.ws.annotations.core">AnnotationDefinition</A>
<DD><B>Deprecated.</B>&nbsp;<I>as of 1.1 replaced by <A HREF="../org/eclipse/jst/ws/annotations/core/AnnotationDefinition.html#getAnnotationTypeTargets()"><CODE>AnnotationDefinition.getAnnotationTypeTargets()</CODE></A></I>
<DT><A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html#getTypeDeclaration(org.eclipse.jdt.core.IType)"><B>getTypeDeclaration(IType)</B></A> - 
Static method in class org.eclipse.jst.ws.annotations.core.utils.<A HREF="../org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.html" title="class in org.eclipse.jst.ws.annotations.core.utils">AnnotationUtils</A>
<DD>Returns the <CODE>AbstractTypeDeclaration</CODE> that corresponds to the given <CODE>IType</CODE>.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getWebContentFolder(org.eclipse.core.resources.IProject)"><B>getWebContentFolder(IProject)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Returns the Web Content folder of the given project.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getWSDLFolder(java.lang.String)"><B>getWSDLFolder(String)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Returns the WSDL folder of the project with the given name.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getWSDLFolder(org.eclipse.core.resources.IProject)"><B>getWSDLFolder(IProject)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Returns the WSDL folder of the given project.
<DT><A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html#getWSDLLocation(javax.wsdl.Definition)"><B>getWSDLLocation(Definition)</B></A> - 
Static method in class org.eclipse.jst.ws.jaxws.core.utils.<A HREF="../org/eclipse/jst/ws/jaxws/core/utils/WSDLUtils.html" title="class in org.eclipse.jst.ws.jaxws.core.utils">WSDLUtils</A>
<DD>Returns the location URI from the first <code>SOAPAddress</code> or <code>SOAP12Address</code> found
 in the given <code>Definition</code> or null if none is found.
</DL>
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Package</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Use</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="index-4.html"><B>PREV LETTER</B></A>&nbsp;
&nbsp;<A HREF="index-6.html"><B>NEXT LETTER</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../index.html?index-filesindex-5.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-5.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<A HREF="index-1.html">A</A> <A HREF="index-2.html">C</A> <A HREF="index-3.html">D</A> <A HREF="index-4.html">F</A> <A HREF="index-5.html">G</A> <A HREF="index-6.html">I</A> <A HREF="index-7.html">J</A> <A HREF="index-8.html">O</A> <A HREF="index-9.html">P</A> <A HREF="index-10.html">R</A> <A HREF="index-11.html">S</A> <A HREF="index-12.html">U</A> <A HREF="index-13.html">V</A> <A HREF="index-14.html">W</A> <HR>

</BODY>
</HTML>
