/** interface fed to Comparator to sort declarations (including comments)
This reordering could screw up static initialisation.  It is up to the
designer to order his declarations so there are no such problems, or to be
safe, put inits in a static init block after all the declarations.
*/
interface DeclarationItem {

/**
  * get the original source of the complete declation, including comments
  */
String getOriginalSource();

/**
  * get Javadoc comment in front of declaration, null if none
  */
String getComment();

/**
  * scope of this declaration
  * Returns enums for private protected package public
  */
Scope getScope();

/**
  * returns true for static, false for instance
  */
boolean isStatic();

/**
  * true if final
  */
boolean isFinal();

/**
  * true if transient
  */
boolean isTransient();

/**
  * true if volatile
  */
boolean isVolatile();

/**
  * return enums for boolean byte char short int float long double Boolean Byte Character Short Integer Float Long Double String Other
  */
Type getType();

/**
  * return 0 for a scalar, 1 for an array, 2 for a [][]...
  */
int getDimension();

/**
  * get the generic type, null if none.
  */
String getGeneric();

/**
  * returns name of Class for other declaration, null if primitive or standard class
  */
String getOtherTypeName();

/**
  * return name of variable
  */
String getVarName();

}