"can only insert a class into hierarchy, but " + iType.getName() + " is not a subtype of " + targetType.getSuperclass().getName(), this.getSourceLocation(), null
WeaverMessages.format(WeaverMessages.DECP_HIERARCHY_ERROR, iType.getName(), targetType.getSuperclass().getName()), this.getSourceLocation(), null
	private ResolvedTypeX maybeGetNewParent(ResolvedTypeX targetType, TypePattern typePattern, World world) {		if (typePattern == TypePattern.NO) return null;  // already had an error here		TypeX iType = typePattern.getExactType();		ResolvedTypeX parentType = iType.resolve(world);				if (targetType.equals(world.resolve(TypeX.OBJECT))) {			world.showMessage(IMessage.ERROR, "can't change the parents of java.lang.Object",			                  this.getSourceLocation(), null);			return null;		}					if (parentType.isAssignableFrom(targetType)) return null;  // already a parent							if (targetType.isAssignableFrom(parentType)) {			world.showMessage(IMessage.ERROR,				"type \'" + targetType.getName() + "\'can not extend itself", this.getSourceLocation(), null			);			return null;		}							if (parentType.isClass()) {			if (targetType.isInterface()) {				world.showMessage(IMessage.ERROR, 					"interface can not extend a class", 					this.getSourceLocation(), null				);				return null;				// how to handle xcutting errors???			}						if (!targetType.getSuperclass().isAssignableFrom(parentType)) {				world.showMessage(IMessage.ERROR,									"can only insert a class into hierarchy, but "									+ iType.getName() + " is not a subtype of " +									targetType.getSuperclass().getName(), 									this.getSourceLocation(), null				);				return null;			} else {				return parentType;			}						} else {			return parentType;		}	}