protected Datatype updateDtrDatatype(Datatype datatype) {
		// protected Datatype updateDtrDatatype(QNameContext qncSchemaType) {
		assert (dtrMapInUse);

		// // QNameContext qncSchemaType = datatype.getSchemaType();
		// QNameContext qncBase = qncSchemaType.getSimpleBaseType();
		// assert(qncSchemaType != null);
		//
		//
		// // // special integer handling
		// // if (dtrDatatype.getBuiltInType() == BuiltInType.INTEGER
		// // && (datatype.getBuiltInType() == BuiltInType.NBIT_UNSIGNED_INTEGER
		// || datatype
		// // .getBuiltInType() == BuiltInType.UNSIGNED_INTEGER)) {
		// // dtrDatatype = datatype;
		// // }
		//
		// Datatype dt = dtrMap.get(qncBase.getQName());
		//
		// if (dt == null) {
		// // dt = updateDtrDatatype(simpleBaseType);
		// // dt = updateDtrDatatype(qncSchemaType.getSimpleBaseDatatype());
		// dt = updateDtrDatatype(qncBase); //baseDatatype);
		// // dtrMap.put(qncBase.getQName(), dt);
		// } else {
		// // save new mapping in map
		// // dtrMap.put(qncSchemaType.getQName(), dt);
		// }
		//
		// return dt;

		Datatype baseDatatype = datatype.getBaseDatatype();
		// QNameContext qncSchemaType = datatype.getSchemaType();
		// QNameContext simpleBaseType =
		// qncSchemaType.getSimpleBaseDatatype().getSchemaType();
		QNameContext simpleBaseType = baseDatatype.getSchemaType();

		Datatype dtrDatatype = dtrMap.get(simpleBaseType.getQName());

		if (dtrDatatype == null) {
			// dt = updateDtrDatatype(simpleBaseType);
			// dt = updateDtrDatatype(qncSchemaType.getSimpleBaseDatatype());
			dtrDatatype = updateDtrDatatype(baseDatatype);
		}

		// special integer handling
		if ((dtrDatatype.getBuiltInType() == BuiltInType.INTEGER || dtrDatatype
				.getBuiltInType() == BuiltInType.UNSIGNED_INTEGER)
				&& (datatype.getBuiltInType() == BuiltInType.NBIT_UNSIGNED_INTEGER || datatype
						.getBuiltInType() == BuiltInType.UNSIGNED_INTEGER)) {
			dtrDatatype = datatype;
		}

		// save new mapping in map
		dtrMap.put(datatype.getSchemaType().getQName(), dtrDatatype);

		return dtrDatatype;
	}
protected Datatype updateDtrDatatype ( Datatype datatype ) { assert ( dtrMapInUse ) ; Datatype baseDatatype = datatype . getBaseDatatype ( ) ; QNameContext simpleBaseType = baseDatatype . getSchemaType ( ) ; Datatype dtrDatatype = dtrMap . get ( simpleBaseType . getQName ( ) ) ; if ( dtrDatatype == null ) { dtrDatatype = updateDtrDatatype ( baseDatatype ) ; } if ( ( dtrDatatype . getBuiltInType ( ) == BuiltInType . INTEGER || dtrDatatype . getBuiltInType ( ) == BuiltInType . UNSIGNED_INTEGER ) && ( datatype . getBuiltInType ( ) == BuiltInType . NBIT_UNSIGNED_INTEGER || datatype . getBuiltInType ( ) == BuiltInType . UNSIGNED_INTEGER ) ) { dtrDatatype = datatype ; } dtrMap . put ( datatype . getSchemaType ( ) . getQName ( ) , dtrDatatype ) ; return dtrDatatype ; }
protected Datatype updateDtrDatatype(QNameContext qncSchemaType) {