docs: @SuppressWarnings({ "unchecked", "rawtypes" })
  	public <NV> Graph<K, NV, EV> mapVertices(final MapFunction<Vertex<K, VV>, NV> mapper) {
  
  		TypeInformation<K> keyType = ((TupleTypeInfo<?>) vertices.getType()).getTypeAt(0);
  
  		TypeInformation<NV> valueType;
  
  		if (mapper instanceof ResultTypeQueryable) {
  			valueType = ((ResultTypeQueryable) mapper).getProducedType();
  		} else {
  			valueType = TypeExtractor.createTypeInfo(MapFunction.class, mapper.getClass(), 1, vertices.getType(), null);
  		}
  
  		TypeInformation<Vertex<K, NV>> returnType = (TypeInformation<Vertex<K, NV>>) new TupleTypeInfo(
  				Vertex.class, keyType, valueType);
  
  		return mapVertices(mapper, returnType);
  	}