private void removeProjections(
     PredicateIndex<AttributeId> predicateIndex, List<List<AttributeId>> projection) {
   for (List<AttributeId> projectionPath : projection) {
     AttributeNode<AttributeId> node = predicateIndex.getAttributeNodeByPath(projectionPath);
     node.removeProjections(this);
   }
 }
 private int addProjections(
     PredicateIndex<AttributeId> predicateIndex, List<List<AttributeId>> projection, int i) {
   for (List<AttributeId> projectionPath : projection) {
     AttributeNode<AttributeId> node = predicateIndex.addAttributeNodeByPath(projectionPath);
     node.addProjection(this, i++);
   }
   return i;
 }