code: public VariableNumMap instantiateVariables(DynamicAssignment assignment) {
      List<String> varNames = Lists.newArrayList();
      List<Variable> variables = Lists.newArrayList();
      List<Integer> variableInds = Lists.newArrayList();
  
      instantiateVariablesHelper(assignment, varNames, variables, variableInds, "", 0);
      Preconditions.checkState(varNames.size() == variables.size());
      return new VariableNumMap(variableInds, varNames, variables);
    }
docs: Gets a {@code VariableNumMap} by replicating the plates in
  {@code this}. {@code assignment} must contain a value (list of
  assignments) for all plates in {@code this}; these values
  determine how many times each plate is replicated in the returned
  {@code VariableNumMap}. If two assignments have the same number
  of replications of each plate, this method will return the same
  {@code VariableNumMap}.
  
  @param assignment
  @return