indicesTo[tensorIndex].add(getToIndexId(indicesContractions[i]));
}
int f = freeIndices.size() == 0 ? 0 : 1;
Contraction[] result = new Contraction[tensorsCount + f];
if (f == 1)
result[0] = new Contraction(-1, freeIndices.toArray(), null);
tensorsCount = f;
for (int i = 0; i < contractions.length; ++i) {
if (involvedTensors[i] == -1)
continue;
result[tensorsCount++] = new Contraction(involvedTensors[i], indicesFrom[i].toArray(), indicesTo[i].toArray());