public Type getCastHelper(Type fromType) {
		Type hintType = fromType.getHint();
		switch (hintType.getTypeCode()) {
		case TC_ARRAY:
			if (!elementType.isClassType()
					|| !((ArrayType) hintType).elementType.isClassType())
				return tObject;
			Type middleType = elementType
					.getCastHelper(((ArrayType) hintType).elementType);
			if (middleType != null)
				return tArray(middleType);
			return null;
		case TC_CLASS:
			ClassInterfacesType hint = (ClassInterfacesType) hintType;
			if (hint.clazz == null
					&& implementsAllIfaces(null, arrayIfaces, hint.ifaces))
				return null;
			return tObject;
		case TC_UNKNOWN:
			return null;
		}
		return tObject;
	}