For GraphPathImpl, we allow the path weight to be specified explicitly as a constructor parameter (meaning it may not even match the sum of the edge weight).  I think the intention there was to allow custom functions to be used for computing the path weight (e.g. vertices could supply weights as well).  Maybe we should do the same here for consistency?