addAll(varIndices.getInverted().getAllIndices().copy(), allFreeArgIndices)),
new int[0]);
ProductBuilder builder = new ProductBuilder(0, length);
for (i = 0; i < length; ++i)
builder.put(createMetricOrKronecker(allFreeArgIndices[i], allFreeVarIndices[i]));
derivative = new SubstitutionTransformation(symmetric, builder.build()).transform(derivative);
this.derivative = derivative;
this.freeVarIndices = var.getIndices().getFree().getInverted().getAllIndices().copy();
this.allFreeFrom = addAll(allFreeArgIndices, freeVarIndices);
}