public String getNameAt(String baseName, int i) {
		for (int f = 0; f < fieldsName.size(); f++) {
			String name = fieldsName.elementAt(f);
			Type   type = fieldsType.elementAt(f);

			// get to the next field
			if ((type.size() <= i) && (f < (fieldsName.size() - 1))) {
				i -= type.size();

				continue;
			}

			// (else)
			if ((type.size() <= i) && ! (f < (fieldsName.size() - 1))) {
				// sign expantion -  type.size() < i and last field
				i = type.size() - 1;
			}

			if (type.hasDerives()) {
				return ((ParentType) type).getNameAt(baseName + "." + name, i);
			}

			return baseName + "." + name + "$" + i;
		}

		return null; //dammy
	}