1) Fixed issue #872.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / IDocumentElementRequestor.java
index 3308ae1..3c6e134 100644 (file)
@@ -13,399 +13,462 @@ package net.sourceforge.phpdt.internal.compiler;
 import net.sourceforge.phpdt.core.compiler.IProblem;
 
 /**
- * Part of the source element parser responsible for building the output.
- * It gets notified of structural information as they are detected, relying
- * on the requestor to assemble them together, based on the notifications it got.
- *
- * The structural investigation includes:
- * - package statement
- * - import statements
- * - top-level types: package member, member types (member types of member types...)
- * - fields
- * - methods
- *
+ * Part of the source element parser responsible for building the output. It
+ * gets notified of structural information as they are detected, relying on the
+ * requestor to assemble them together, based on the notifications it got.
+ * 
+ * The structural investigation includes: - package statement - import
+ * statements - top-level types: package member, member types (member types of
+ * member types...) - fields - methods
+ * 
  * If reference information is requested, then all source constructs are
  * investigated and type, field & method references are provided as well.
- *
+ * 
  * Any (parsing) problem encountered is also provided.
- *
+ * 
  * All positions are relative to the exact source fed to the parser.
- *
- * Elements which are complex are notified in two steps:
- * - enter<Element> : once the element header has been identified
- * - exit<Element> : once the element has been fully consumed
- *
- * other simpler elements (package, import) are read all at once:
- * - accept<Element>
- */
-public interface IDocumentElementRequestor {
-/**
- * @param declarationStart - a source position corresponding to the start of the package
- *  declaration
- * @param declarationEnd - a source position corresponding to the end of the package
- *  declaration
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param name - the name of the package
- * @param nameStartPosition - a source position corresponding to the first character of the
- *  name
- * @param onDemand - a boolean equals to true if the import is an import on demand
- */
-void acceptImport(
-       int declarationStart, 
-       int declarationEnd,
-       int[] javaDocPositions, 
-       char[] name, 
-       int nameStartPosition,
-       boolean onDemand);
-/**
- * @param declarationStart - a source position corresponding to the start of the package
- *  declaration
- * @param declarationEnd - a source position corresponding to the end of the package
- *  declaration
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this initializer
- * @param modifiersStart - a source position corresponding to the start
- *  of the textual modifiers, is < 0 if there are no textual modifiers
- * @param bodyStart - the position of the '{'
- * @param bodyEnd - the position of the '}'
- */
-void acceptInitializer(
-       int declarationStart,
-       int declarationEnd,
-       int[] javaDocPositions, 
-       int modifiers,
-       int modifiersStart,
-       int bodyStart,
-       int bodyEnd);
-/*
- * Table of line separator position. This table is passed once at the end
- * of the parse action, so as to allow computation of normalized ranges.
- *
- * A line separator might corresponds to several characters in the source,
  * 
+ * Elements which are complex are notified in two steps: - enter<Element> :
+ * once the element header has been identified - exit<Element> : once the
+ * element has been fully consumed
+ * 
+ * other simpler elements (package, import) are read all at once: - accept<Element>
  */
-void acceptLineSeparatorPositions(int[] positions);
-/**
- * @param declarationStart - a source position corresponding to the start of the package
- *  declaration
- * @param declarationEnd - a source position corresponding to the end of the package
- *  declaration
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param name - the name of the package
- * @param nameStartPosition - a source position corresponding to the first character of the
- *  name
- */
-void acceptPackage(
-       int declarationStart, 
-       int declarationEnd,
-       int[] javaDocPositions, 
-       char[] name, 
-       int nameStartPosition);
-/**
- * @param problem - Used to report a problem while running the JDOM
- */
-void acceptProblem(IProblem problem);
-/**
- * @param declarationStart - a source position corresponding to the start
- *  of this class.
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this class
- * @param modifiersStart - a source position corresponding to the start
- *  of the textual modifiers, is < 0 if there are no textual modifiers
- * @param classStart - a source position corresponding to the start
- *  of the keyword 'class'
- * @param name - the name of the class
- * @param nameStart - a source position corresponding to the start of the name
- * @param nameEnd - a source position corresponding to the end of the name
- * @param superclass - the name of the superclass
- * @param superclassStart - a source position corresponding to the start
- *  of the superclass name
- * @param superclassEnd - a source position corresponding to the end of the
- *  superclass name
- * @param superinterfaces - the name of the superinterfaces
- * @param superinterfaceStarts - an array of source positions corresponding
- *  to the start of their respective superinterface names
- * @param superinterfaceEnds - an array of source positions corresponding
- *  to the end of their respective superinterface names
- * @param bodyStart - a source position corresponding to the open bracket
- *  of the class body
- */
-void enterClass(
-       int declarationStart,
-       int[] javaDocPositions,
-       int modifiers,
-       int modifiersStart,
-       int classStart, 
-       char[] name,
-       int nameStart,
-       int nameEnd,
-       char[] superclass,
-       int superclassStart,
-       int superclassEnd,
-       char[][] superinterfaces,
-       int[] superinterfaceStarts,
-       int[] superinterfaceEnds,
-       int bodyStart);
-void enterCompilationUnit();
-/**
- * @param declarationStart - a source position corresponding to the first character 
- *  of this constructor declaration
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this constructor converted to a flag
- * @param modifiersStart - a source position corresponding to the first character of the
- *  textual modifiers
- * @param name - the name of this constructor
- * @param nameStart - a source position corresponding to the first character of the name
- * @param nameEnd - a source position corresponding to the last character of the name
- * @param parameterTypes - a list of parameter type names
- * @param parameterTypeStarts - a list of source positions corresponding to the
- *  first character of each parameter type name
- * @param parameterTypeEnds - a list of source positions corresponding to the
- *  last character of each parameter type name
- * @param parameterNames - a list of the names of the parameters
- * @param parametersEnd - a source position corresponding to the last character of the
- *  parameter list
- * @param exceptionTypes - a list of the exception types
- * @param exceptionTypeStarts - a list of source positions corresponding to the first
- *  character of the respective exception types
- * @param exceptionTypeEnds - a list of source positions corresponding to the last
- *  character of the respective exception types
- * @param bodyStart - a source position corresponding to the start of this 
- *  constructor's body
- */
-void enterConstructor(
-       int declarationStart,
-       int[] javaDocPositions, 
-       int modifiers,
-       int modifiersStart, 
-       char[] name,
-       int nameStart,
-       int nameEnd,
-       char[][] parameterTypes,
-       int [] parameterTypeStarts,
-       int [] parameterTypeEnds,                       
-       char[][] parameterNames,
-       int [] parameterNameStarts,
-       int [] parameterNameEnds,
-       int parametersEnd,      
-       char[][] exceptionTypes,
-       int [] exceptionTypeStarts,
-       int [] exceptionTypeEnds,
-       int bodyStart);
-/**
- * @param declarationStart - a source position corresponding to the first character 
- *  of this field
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this field converted to a flag
- * @param modifiersStart - a source position corresponding to the first character of the
- *  textual modifiers
- * @param type - the name of the field type
- * @param typeStart - a source position corresponding to the start of the fields type
- * @param typeEnd - a source position corresponding to the end of the fields type
- * @param typeDimensionCount - the array dimension indicated on the type (for example, 'int[] v')
- * @param name - the name of this constructor
- * @param nameStart - a source position corresponding to the first character of the name
- * @param nameEnd - a source position corresponding to the last character of the name
- * @param extendedTypeDimensionCount - the array dimension indicated on the variable,
- *  (for example, 'int v[]')
- * @param extendedTypeDimnesionEnd - a source position corresponding to the end of
- *  the extened type dimension. This position should be -1 in case there is no extended
- *  dimension for the type.
- */
-void enterField(
-       int declarationStart,
-       int[] javaDocPositions, 
-       int modifiers,
-       int modifiersStart,
-       char[] type,
-       int typeStart,
-       int typeEnd,
-       int typeDimensionCount,
-       char[] name,
-       int nameStart,
-       int nameEnd,
-       int extendedTypeDimensionCount,
-       int extendedTypeDimensionEnd);
-/**
- * @param declarationStart - a source position corresponding to the start
- *  of this class.
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this class
- * @param modifiersStart - a source position corresponding to the start
- *  of the textual modifiers, is < 0 if there are no textual modifiers
- * @param interfaceStart - a source position corresponding to the start
- *  of the keyword 'interface'
- * @param name - the name of the class
- * @param nameStart - a source position corresponding to the start of the name
- * @param nameEnd - a source position corresponding to the end of the name
- * @param superinterfaces - the name of the superinterfaces
- * @param superinterfaceStarts - an array of source positions corresponding
- *  to the start of their respective superinterface names
- * @param superinterfaceEnds - an array of source positions corresponding
- *  to the end of their respective superinterface names
- * @param bodyStart - a source position corresponding to the open bracket
- *  of the class body
- */
-void enterInterface(
-       int declarationStart,
-       int[] javaDocPositions, 
-       int modifiers,
-       int modifiersStart,
-       int interfaceStart,
-       char[] name,
-       int nameStart,
-       int nameEnd,
-       char[][] superinterfaces,
-       int[] superinterfaceStarts,
-       int[] superinterfaceEnds,
-       int bodyStart);
-/**
- * @param declarationStart - a source position corresponding to the first character 
- *  of this constructor declaration
- * @param javaDocPositions - answer back an array of sourceStart/sourceEnd
- * positions of the available JavaDoc comments. The array is a flattened 
- * structure: 2*n entries with consecutives start and end positions.
- * If no JavaDoc is available, then null is answered instead of an empty array.
- * e.g. { 10, 20, 25, 45 }  --> javadoc1 from 10 to 20, javadoc2 from 25 to 45
- * The array is equals to null if there are no javadoc comments
- * @param modifiers - the modifiers for this constructor converted to a flag
- * @param modifiersStart - a source position corresponding to the first character of the
- *  textual modifiers
- * @param returnType - the name of the return type
- * @param returnTypeStart - a source position corresponding to the first character
- *  of the return type
- * @param returnTypeEnd - a source position corresponding to the last character
- *  of the return type
- * @param returnTypeDimensionCount - the array dimension count as supplied on the
- *  return type (for example, 'public int[] foo() {}')
- * @param name - the name of this constructor
- * @param nameStart - a source position corresponding to the first character of the name
- * @param nameEnd - a source position corresponding to the last character of the name
- * @param parameterTypes - a list of parameter type names
- * @param parameterTypeStarts - a list of source positions corresponding to the
- *  first character of each parameter type name
- * @param parameterTypeEnds - a list of source positions corresponding to the
- *  last character of each parameter type name
- * @param parameterNames - a list of the names of the parameters
- * @param parametersEnd - a source position corresponding to the last character of the
- *  parameter list
- * @param extendedReturnTypeDimensionCount - the array dimension count as supplied on the
- *  end of the parameter list (for example, 'public int foo()[] {}')
- * @param extendedReturnTypeDimensionEnd - a source position corresponding to the last character
- *  of the extended return type dimension. This position should be -1 in case there is no extended
- *  dimension for the type.
- * @param exceptionTypes - a list of the exception types
- * @param exceptionTypeStarts - a list of source positions corresponding to the first
- *  character of the respective exception types
- * @param exceptionTypeEnds - a list of source positions corresponding to the last
- *  character of the respective exception types
- * @param bodyStart - a source position corresponding to the start of this 
- *  method's body
- */
-void enterMethod(
-       int declarationStart,
-       int[] javaDocPositions, 
-       int modifiers,
-       int modifiersStart, 
-       char[] returnType,
-       int returnTypeStart,
-       int returnTypeEnd,
-       int returnTypeDimensionCount,
-       char[] name,
-       int nameStart,
-       int nameEnd,
-       char[][] parameterTypes,
-       int [] parameterTypeStarts,
-       int [] parameterTypeEnds,                       
-       char[][] parameterNames,
-       int [] parameterNameStarts,
-       int [] parameterNameEnds,
-       int parametersEnd,
-       int extendedReturnTypeDimensionCount,
-       int extendedReturnTypeDimensionEnd,     
-       char[][] exceptionTypes,
-       int [] exceptionTypeStarts,
-       int [] exceptionTypeEnds,
-       int bodyStart);
-/**
- * @param bodyEnd - a source position corresponding to the closing bracket of the class
- * @param declarationEnd - a source position corresponding to the end of the class
- *  declaration.  This can include whitespace and comments following the closing bracket.
- */
-void exitClass(
-       int bodyEnd,
-       int declarationEnd);
-/**
- * @param declarationEnd - a source position corresponding to the end of the compilation unit
- */
-void exitCompilationUnit(
-       int declarationEnd);
-/**
- * @param bodyEnd - a source position corresponding to the closing bracket of the method
- * @param declarationEnd - a source position corresponding to the end of the method
- *  declaration.  This can include whitespace and comments following the closing bracket.
- */
-void exitConstructor(
-       int bodyEnd,
-       int declarationEnd);
-/**
- * @param bodyEnd - a source position corresponding to the end of the field.
- * @param declarationEnd - a source position corresponding to the end of the field.
- *  This can include whitespace and comments following the semi-colon.
- */
-void exitField(
-       int bodyEnd,
-       int declarationEnd);
-/**
- * @param bodyEnd - a source position corresponding to the closing bracket of the interface
- * @param declarationEnd - a source position corresponding to the end of the interface
- *  declaration.  This can include whitespace and comments following the closing bracket.
- */
-void exitInterface(
-       int bodyEnd,
-       int declarationEnd);
-/**
- * @param bodyEnd - a source position corresponding to the closing bracket of the method
- * @param declarationEnd - a source position corresponding to the end of the method
- *  declaration.  This can include whitespace and comments following the closing bracket.
- */
-void exitMethod(
-       int bodyEnd,
-       int declarationEnd);
+
+public interface IDocumentElementRequestor {
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the start of the package
+        *            declaration
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the package
+        *            declaration
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param name -
+        *            the name of the package
+        * @param nameStartPosition -
+        *            a source position corresponding to the first character of the
+        *            name
+        * @param onDemand -
+        *            a boolean equals to true if the import is an import on demand
+        */
+       void acceptImport(int declarationStart, int declarationEnd,
+                       int[] javaDocPositions, char[] name, int nameStartPosition,
+                       boolean onDemand);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the start of the package
+        *            declaration
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the package
+        *            declaration
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this initializer
+        * @param modifiersStart -
+        *            a source position corresponding to the start of the textual
+        *            modifiers, is < 0 if there are no textual modifiers
+        * @param bodyStart -
+        *            the position of the '{'
+        * @param bodyEnd -
+        *            the position of the '}'
+        */
+       void acceptInitializer(int declarationStart, int declarationEnd,
+                       int[] javaDocPositions, int modifiers, int modifiersStart,
+                       int bodyStart, int bodyEnd);
+
+       /*
+        * Table of line separator position. This table is passed once at the end of
+        * the parse action, so as to allow computation of normalized ranges.
+        * 
+        * A line separator might corresponds to several characters in the source,
+        * 
+        */
+       void acceptLineSeparatorPositions(int[] positions);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the start of the package
+        *            declaration
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the package
+        *            declaration
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param name -
+        *            the name of the package
+        * @param nameStartPosition -
+        *            a source position corresponding to the first character of the
+        *            name
+        */
+       void acceptPackage(int declarationStart, int declarationEnd,
+                       int[] javaDocPositions, char[] name, int nameStartPosition);
+
+       /**
+        * @param problem -
+        *            Used to report a problem while running the JDOM
+        */
+       void acceptProblem(IProblem problem);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the start of this class.
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this class
+        * @param modifiersStart -
+        *            a source position corresponding to the start of the textual
+        *            modifiers, is < 0 if there are no textual modifiers
+        * @param classStart -
+        *            a source position corresponding to the start of the keyword
+        *            'class'
+        * @param name -
+        *            the name of the class
+        * @param nameStart -
+        *            a source position corresponding to the start of the name
+        * @param nameEnd -
+        *            a source position corresponding to the end of the name
+        * @param superclass -
+        *            the name of the superclass
+        * @param superclassStart -
+        *            a source position corresponding to the start of the superclass
+        *            name
+        * @param superclassEnd -
+        *            a source position corresponding to the end of the superclass
+        *            name
+        * @param superinterfaces -
+        *            the name of the superinterfaces
+        * @param superinterfaceStarts -
+        *            an array of source positions corresponding to the start of
+        *            their respective superinterface names
+        * @param superinterfaceEnds -
+        *            an array of source positions corresponding to the end of their
+        *            respective superinterface names
+        * @param bodyStart -
+        *            a source position corresponding to the open bracket of the
+        *            class body
+        */
+       void enterClass(int declarationStart, int[] javaDocPositions,
+                       int modifiers, int modifiersStart, int classStart, char[] name,
+                       int nameStart, int nameEnd, char[] superclass, int superclassStart,
+                       int superclassEnd, char[][] superinterfaces,
+                       int[] superinterfaceStarts, int[] superinterfaceEnds, int bodyStart);
+
+       void enterCompilationUnit();
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the first character of this
+        *            constructor declaration
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this constructor converted to a flag
+        * @param modifiersStart -
+        *            a source position corresponding to the first character of the
+        *            textual modifiers
+        * @param name -
+        *            the name of this constructor
+        * @param nameStart -
+        *            a source position corresponding to the first character of the
+        *            name
+        * @param nameEnd -
+        *            a source position corresponding to the last character of the
+        *            name
+        * @param parameterTypes -
+        *            a list of parameter type names
+        * @param parameterTypeStarts -
+        *            a list of source positions corresponding to the first
+        *            character of each parameter type name
+        * @param parameterTypeEnds -
+        *            a list of source positions corresponding to the last character
+        *            of each parameter type name
+        * @param parameterNames -
+        *            a list of the names of the parameters
+        * @param parametersEnd -
+        *            a source position corresponding to the last character of the
+        *            parameter list
+        * @param exceptionTypes -
+        *            a list of the exception types
+        * @param exceptionTypeStarts -
+        *            a list of source positions corresponding to the first
+        *            character of the respective exception types
+        * @param exceptionTypeEnds -
+        *            a list of source positions corresponding to the last character
+        *            of the respective exception types
+        * @param bodyStart -
+        *            a source position corresponding to the start of this
+        *            constructor's body
+        */
+       void enterConstructor(int declarationStart, int[] javaDocPositions,
+                       int modifiers, int modifiersStart, char[] name, int nameStart,
+                       int nameEnd, char[][] parameterTypes, int[] parameterTypeStarts,
+                       int[] parameterTypeEnds, char[][] parameterNames,
+                       int[] parameterNameStarts, int[] parameterNameEnds,
+                       int parametersEnd, char[][] exceptionTypes,
+                       int[] exceptionTypeStarts, int[] exceptionTypeEnds, int bodyStart);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the first character of this
+        *            field
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this field converted to a flag
+        * @param modifiersStart -
+        *            a source position corresponding to the first character of the
+        *            textual modifiers
+        * @param type -
+        *            the name of the field type
+        * @param typeStart -
+        *            a source position corresponding to the start of the fields
+        *            type
+        * @param typeEnd -
+        *            a source position corresponding to the end of the fields type
+        * @param typeDimensionCount -
+        *            the array dimension indicated on the type (for example, 'int[]
+        *            v')
+        * @param name -
+        *            the name of this constructor
+        * @param nameStart -
+        *            a source position corresponding to the first character of the
+        *            name
+        * @param nameEnd -
+        *            a source position corresponding to the last character of the
+        *            name
+        * @param extendedTypeDimensionCount -
+        *            the array dimension indicated on the variable, (for example,
+        *            'int v[]')
+        * @param extendedTypeDimnesionEnd -
+        *            a source position corresponding to the end of the extened type
+        *            dimension. This position should be -1 in case there is no
+        *            extended dimension for the type.
+        */
+       void enterField(int declarationStart, int[] javaDocPositions,
+                       int modifiers, int modifiersStart, char[] type, int typeStart,
+                       int typeEnd, int typeDimensionCount, char[] name, int nameStart,
+                       int nameEnd, int extendedTypeDimensionCount,
+                       int extendedTypeDimensionEnd);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the start of this class.
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this class
+        * @param modifiersStart -
+        *            a source position corresponding to the start of the textual
+        *            modifiers, is < 0 if there are no textual modifiers
+        * @param interfaceStart -
+        *            a source position corresponding to the start of the keyword
+        *            'interface'
+        * @param name -
+        *            the name of the class
+        * @param nameStart -
+        *            a source position corresponding to the start of the name
+        * @param nameEnd -
+        *            a source position corresponding to the end of the name
+        * @param superinterfaces -
+        *            the name of the superinterfaces
+        * @param superinterfaceStarts -
+        *            an array of source positions corresponding to the start of
+        *            their respective superinterface names
+        * @param superinterfaceEnds -
+        *            an array of source positions corresponding to the end of their
+        *            respective superinterface names
+        * @param bodyStart -
+        *            a source position corresponding to the open bracket of the
+        *            class body
+        */
+       void enterInterface(int declarationStart, int[] javaDocPositions,
+                       int modifiers, int modifiersStart, int interfaceStart, char[] name,
+                       int nameStart, int nameEnd, char[][] superinterfaces,
+                       int[] superinterfaceStarts, int[] superinterfaceEnds, int bodyStart);
+
+       /**
+        * @param declarationStart -
+        *            a source position corresponding to the first character of this
+        *            constructor declaration
+        * @param javaDocPositions -
+        *            answer back an array of sourceStart/sourceEnd positions of the
+        *            available JavaDoc comments. The array is a flattened
+        *            structure: 2*n entries with consecutives start and end
+        *            positions. If no JavaDoc is available, then null is answered
+        *            instead of an empty array. e.g. { 10, 20, 25, 45 } -->
+        *            javadoc1 from 10 to 20, javadoc2 from 25 to 45 The array is
+        *            equals to null if there are no javadoc comments
+        * @param modifiers -
+        *            the modifiers for this constructor converted to a flag
+        * @param modifiersStart -
+        *            a source position corresponding to the first character of the
+        *            textual modifiers
+        * @param returnType -
+        *            the name of the return type
+        * @param returnTypeStart -
+        *            a source position corresponding to the first character of the
+        *            return type
+        * @param returnTypeEnd -
+        *            a source position corresponding to the last character of the
+        *            return type
+        * @param returnTypeDimensionCount -
+        *            the array dimension count as supplied on the return type (for
+        *            example, 'public int[] foo() {}')
+        * @param name -
+        *            the name of this constructor
+        * @param nameStart -
+        *            a source position corresponding to the first character of the
+        *            name
+        * @param nameEnd -
+        *            a source position corresponding to the last character of the
+        *            name
+        * @param parameterTypes -
+        *            a list of parameter type names
+        * @param parameterTypeStarts -
+        *            a list of source positions corresponding to the first
+        *            character of each parameter type name
+        * @param parameterTypeEnds -
+        *            a list of source positions corresponding to the last character
+        *            of each parameter type name
+        * @param parameterNames -
+        *            a list of the names of the parameters
+        * @param parametersEnd -
+        *            a source position corresponding to the last character of the
+        *            parameter list
+        * @param extendedReturnTypeDimensionCount -
+        *            the array dimension count as supplied on the end of the
+        *            parameter list (for example, 'public int foo()[] {}')
+        * @param extendedReturnTypeDimensionEnd -
+        *            a source position corresponding to the last character of the
+        *            extended return type dimension. This position should be -1 in
+        *            case there is no extended dimension for the type.
+        * @param exceptionTypes -
+        *            a list of the exception types
+        * @param exceptionTypeStarts -
+        *            a list of source positions corresponding to the first
+        *            character of the respective exception types
+        * @param exceptionTypeEnds -
+        *            a list of source positions corresponding to the last character
+        *            of the respective exception types
+        * @param bodyStart -
+        *            a source position corresponding to the start of this method's
+        *            body
+        */
+       void enterMethod(int declarationStart, int[] javaDocPositions,
+                       int modifiers, int modifiersStart, char[] returnType,
+                       int returnTypeStart, int returnTypeEnd,
+                       int returnTypeDimensionCount, char[] name, int nameStart,
+                       int nameEnd, char[][] parameterTypes, int[] parameterTypeStarts,
+                       int[] parameterTypeEnds, char[][] parameterNames,
+                       int[] parameterNameStarts, int[] parameterNameEnds,
+                       int parametersEnd, int extendedReturnTypeDimensionCount,
+                       int extendedReturnTypeDimensionEnd, char[][] exceptionTypes,
+                       int[] exceptionTypeStarts, int[] exceptionTypeEnds, int bodyStart);
+
+       /**
+        * @param bodyEnd -
+        *            a source position corresponding to the closing bracket of the
+        *            class
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the class
+        *            declaration. This can include whitespace and comments
+        *            following the closing bracket.
+        */
+       void exitClass(int bodyEnd, int declarationEnd);
+
+       /**
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the compilation
+        *            unit
+        */
+       void exitCompilationUnit(int declarationEnd);
+
+       /**
+        * @param bodyEnd -
+        *            a source position corresponding to the closing bracket of the
+        *            method
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the method
+        *            declaration. This can include whitespace and comments
+        *            following the closing bracket.
+        */
+       void exitConstructor(int bodyEnd, int declarationEnd);
+
+       /**
+        * @param bodyEnd -
+        *            a source position corresponding to the end of the field.
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the field. This
+        *            can include whitespace and comments following the semi-colon.
+        */
+       void exitField(int bodyEnd, int declarationEnd);
+
+       /**
+        * @param bodyEnd -
+        *            a source position corresponding to the closing bracket of the
+        *            interface
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the interface
+        *            declaration. This can include whitespace and comments
+        *            following the closing bracket.
+        */
+       void exitInterface(int bodyEnd, int declarationEnd);
+
+       /**
+        * @param bodyEnd -
+        *            a source position corresponding to the closing bracket of the
+        *            method
+        * @param declarationEnd -
+        *            a source position corresponding to the end of the method
+        *            declaration. This can include whitespace and comments
+        *            following the closing bracket.
+        */
+       void exitMethod(int bodyEnd, int declarationEnd);
 }