code: @Override
  	public void addType(int pos, Class<? extends Value> type) throws ConflictingFieldTypeInfoException {
  		if (pos == schema.size()) {
  			// right at the end, most common case
  			schema.add(type);
  		} else if (pos < schema.size()) {
  			// in the middle, check for existing conflicts
  			Class<? extends Value> previous = schema.get(pos);
  			if (previous == null) {
  				schema.set(pos, type);
  			} else if (previous != type) {
  				throw new ConflictingFieldTypeInfoException(pos, previous, type);
  			}
  		} else {
  			// grow to the end
  			for (int i = schema.size(); i <= pos; i++) {
  				schema.add(null);
  			}
  			schema.set(pos, type);
  		}
  	}
docs: --------------------------------------------------------------------------------------------