public static Input composite(List<File> files){
  if (files.size() == 0)   return NullInput.INSTANCE;
  if (files.size() == 1)   return new FileInput(files.get(0));
  return new CompositeInput(multiple(files));
}

public static Input composite ( List < File > files ) { if ( files . size ( ) == 0 ) return NullInput . INSTANCE ; if ( files . size ( ) == 1 ) return new FileInput ( files . get ( 0 ) ) ; return new CompositeInput ( multiple ( files ) ) ; }
creates and returns an input composed from the specified files altogether . the resulting input object returns the lines lines of the first file first , then the lines of the second file etc .
