code: protected List<DynamicAssignment> getOutputAssignments(
        Iterable<Example<DynamicAssignment, DynamicAssignment>> trainingData,
        boolean checkNoInputs) {
      List<DynamicAssignment> trainingDataList = Lists.newArrayList();
      for (Example<DynamicAssignment, DynamicAssignment> example : trainingData) {
        Preconditions.checkArgument(!checkNoInputs || example.getInput().equals(DynamicAssignment.EMPTY));
        trainingDataList.add(example.getOutput());
      }
      return trainingDataList;
    }
docs: Gets the output values of {@code trainingData}. If
  {@code checkNoInputs == true}, this method also checks to make sure that
  the input assignments are empty; such a check is useful when a trainer
  always optimizes a joint distribution.
  
  @param trainingData
  @param checkNoInputs
  @return