if (epsComponent.isEmpty())
continue;
temp = multiply(epsComponent.toArray(new Tensor[epsComponent.size()]));
epsComponent.clear();
MappingsPort port = IndexMappings.createPort(temp, temp);
IndexMappingBuffer buffer;
Symmetry sym;
IntArrayList nonPermutable = new IntArrayList();
int[] indices = temp.getIndices().getFree().getAllIndices().copy();
int[] epsIndices = content.get(epsPositions.get(i)).getIndices().getFree().getAllIndices().copy();
boolean contract;
for (b = 0; b < indices.length; ++b) {
contract = false;
for (a = 0; a < epsIndices.length; ++a)
if (indices[b] == inverseIndexState(epsIndices[a]))
contract = true;
if (!contract)
nonPermutable.add(b);
}
int[] nonPermutablePositions = nonPermutable.toArray();
if (indices.length == 1)
continue;
Map<IntArray, Boolean> symmetries = getEpsilonSymmetries(indices.length);
while ((buffer = port.take()) != null) {
sym = TensorUtils.getSymmetryFromMapping(indices, buffer);
if (!checkNonPermutingPositions(sym, nonPermutablePositions))
continue;
if (sym.isAntiSymmetry() != symmetries.get(sym.getPermutation()))