docs: public static List<Writable> toRecord(Schema schema, List<Object> source){
          final List<Writable> record = new ArrayList<>(source.size());
          final List<ColumnMetaData> columnMetaData = schema.getColumnMetaData();
  
          if(columnMetaData.size() != source.size()){
              throw new IllegalArgumentException("Schema and source list don't have the same length!");
          }
  
          for (int i = 0; i < columnMetaData.size(); i++) {
              final ColumnMetaData metaData = columnMetaData.get(i);
              final Object data = source.get(i);
              if(!metaData.isValid(data)){
                  throw new IllegalArgumentException("Element "+i+": "+data+" is not valid for Column \""+metaData.getName()+"\" ("+metaData.getColumnType()+")");
              }
  
              try {
                  final Writable writable;
                  switch (metaData.getColumnType().getWritableType()){
                      case Float:
                          writable = new FloatWritable((Float) data);
                          break;
                      case Double:
                          writable = new DoubleWritable((Double) data);
                          break;
                      case Int:
                          writable = new IntWritable((Integer) data);
                          break;
                      case Byte:
                          writable = new ByteWritable((Byte) data);
                          break;
                      case Boolean:
                          writable = new BooleanWritable((Boolean) data);
                          break;
                      case Long:
                          writable = new LongWritable((Long) data);
                          break;
                      case Null:
                          writable = new NullWritable();
                          break;
                      case Bytes:
                          writable = new BytesWritable((byte[]) data);
                          break;
                      case NDArray:
                          writable = new NDArrayWritable((INDArray) data);
                          break;
                      case Text:
                          if(data instanceof String)
                              writable = new Text((String) data);
                          else if(data instanceof Text)
                              writable = new Text((Text) data);
                          else if(data instanceof byte[])
                              writable = new Text((byte[]) data);
                          else
                              throw new IllegalArgumentException("Element "+i+": "+data+" is not usable for Column \""+metaData.getName()+"\" ("+metaData.getColumnType()+")");
                          break;
                      default:
                          throw new IllegalArgumentException("Element "+i+": "+data+" is not usable for Column \""+metaData.getName()+"\" ("+metaData.getColumnType()+")");
                  }
                  record.add(writable);
              } catch (ClassCastException e) {
                  throw new IllegalArgumentException("Element "+i+": "+data+" is not usable for Column \""+metaData.getName()+"\" ("+metaData.getColumnType()+")", e);
              }
          }
  
          return record;
      }