public void notifySourceElementRequestor( ClassData clazz ) {

		char [] typeName=clazz.name.toCharArray();
					// prevent possible recurrsion
		if (notifiedTypes.containsKey(typeName))
			return;
		notifiedTypes.put(typeName, null);
		

		ISourceElementRequestor.TypeInfo typeInfo = new ISourceElementRequestor.TypeInfo();
		typeInfo.declarationStart = 0;
		typeInfo.modifiers = 0;

		typeInfo.name = typeName;

		typeInfo.nameSourceStart = 0;//type.getNameStart();
		typeInfo.nameSourceEnd = 0;//typeInfo.nameSourceStart+typeInfo.name.length-1;
		
		String superClass=clazz.getSuperClass();
		if (superClass!=null)
			typeInfo.superclass =superClass.toCharArray();
		typeInfo.secondary = false;

		typeInfo.anonymousMember = false;

		requestor.enterType(typeInfo);

		Property[] fields = clazz.getFields();
		  for (int attributeInx=0; attributeInx<fields.length; attributeInx++) {
			  Property field = fields[attributeInx];
			ISourceElementRequestor.FieldInfo fieldInfo = new ISourceElementRequestor.FieldInfo();
			fieldInfo.declarationStart = 0;//field.sourceStart();
			fieldInfo.name = field.name.toCharArray();
			fieldInfo.modifiers = 0;

			if (field.isStatic())
				fieldInfo.modifiers |= ClassFileConstants.AccStatic;
			fieldInfo.nameSourceStart = 0;//field.nameStart;
			fieldInfo.nameSourceEnd = 0;//field.nameStart+field.name.length-1;

			fieldInfo.type = field.dataType!=null ? field.dataType.toCharArray():null;

//				fieldInfo.annotationPositions = collectAnnotationPositions(fieldDeclaration.annotations);
//				fieldInfo.categories = (char[][]) this.nodesToCategories.get(fieldDeclaration);
			requestor.enterField(fieldInfo);

//			//If this field is of an anonymous type, need to notify so that it shows as a child
//			if( field.type != null && field.type.isAnonymous && !field.type.isNamed() ){
//				notifySourceElementRequestor( field.type );
//			}

			int initializationStart=0;//field.initializationStart;
			requestor.exitField(initializationStart,0,0/*field.sourceEnd(),field.sourceEnd()*/);
		}

		if (clazz.constructors!=null)
		  for (int methodInx=0;methodInx<clazz.constructors.length;methodInx++) {
			Method method=clazz.constructors[methodInx];

			boolean isConstructor=true;

			notifyMethod(method, isConstructor);

		}


		if (clazz.methods!=null)
		  for (int methodInx=0;methodInx<clazz.methods.length;methodInx++) {
			Method method=clazz.methods[methodInx];

			boolean isConstructor=false;

			notifyMethod(method, isConstructor);

		}

		requestor.exitType(0/*clazz.sourceEnd*/);

	}