anchor.diff:  encode_rows(ColumnTypes, Rows) ->
       [encode_row(ColumnTypes, Row) || Row <- Rows].
   
  +%% @doc Only for encoding rows for PUTs on the erlang client.
  +%%      Will not properly encode timestamp #tscell{} records,
  +%%      but this is OK for this use case since the values
  +%%      get cast in the order of:
  +%%      lvldbvalue() -> #tscell{} -> lvldbvalue().
  +%%      THEREFORE no info is lost for these cases.
  +%% @end
  +encode_rows_non_strict(Rows) ->
  +    [encode_row_non_strict(Row) || Row <- Rows].
  +
   %% @doc Decode a list of timeseries #tsrow{} to a list of tuples.
   %% Each row is converted through `decode_cells/1`, and the list
   %% of ldbvalue() is converted to a tuple of ldbvalue().
  
positive.code: -include("riak_ts_pb.hrl").
  
  -export([encode_rows/2,
           decode_rows/1,
           encode_cells/1,
           decode_cells/1,
  
negative.code: -spec encode_row(list(tscolumntype()), list(ldbvalue())) -> #tsrow{}.
  encode_row(ColumnTypes, RowCells) when length(ColumnTypes) =:= length(RowCells) ->
      #tsrow{cells = [encode_cell(ColumnTypeCell) || ColumnTypeCell <- lists:zip(ColumnTypes, RowCells)]}.
  
  %% @doc Only for encoding rows for PUTs on the erlang client.
  %%      Will not properly encode timestamp #tscell{} records,
  %%      but this is OK for these use cases since the values
  %%      get cast in the order of:
  %%      lvldbvalue() -> #tscell{} -> lvldbvalue().
  %%      THEREFORE no info is lost for these cases.
  %% @end
  -spec encode_row_non_strict(list(ldbvalue())) -> #tsrow{}.
  encode_row_non_strict(RowCells) ->
      #tsrow{cells = encode_cells_non_strict(RowCells)}.
  
  %% @doc Only for encoding cells for PUTs on the erlang client,
  %%      and Key cells for get / delete requests.
  %%      Will not properly encode timestamp #tscell{} records,
  %%      but this is OK for these use cases since the values
  %%      get cast in the order of:
  %%      lvldbvalue() -> #tscell{} -> lvldbvalue().
  %%      THEREFORE no info is lost for these cases.
  %% @end
  -spec encode_cells_non_strict(list(ldbvalue())) -> list(#tscell{}).
  encode_cells_non_strict(Cells) ->
      [encode_cell_non_strict(Cell) || Cell <- Cells].
  
  -spec encode_cell({tscolumntype(), ldbvalue()}) -> #tscell{}.
  encode_cell({varchar, V}) when is_binary(V) ->
  