@Override
 public void visitValue(PValue value, TransformTreeNode producer) {
   toFinalize.add(value);
   for (PValue expandedValue : value.expand()) {
     valueToConsumers.put(expandedValue, new ArrayList<AppliedPTransform<?, ?, ?>>());
     if (expandedValue instanceof PCollectionView) {
       views.add((PCollectionView<?>) expandedValue);
     }
     expandedValue.recordAsOutput(getAppliedTransform(producer));
   }
   value.recordAsOutput(getAppliedTransform(producer));
 }
 private AppliedPTransform<?, ?, ?> getProducing(PValue value) {
   if (value.getProducingTransformInternal() != null) {
     return value.getProducingTransformInternal();
   }
   return lookupProducing(value);
 }