anchor.diff:  	Chars = {"usageSpecCharacteristic", {array, []}},
   	{struct, [Id, Name, Href, Description, Version, LastUpdate, Status, Chars]}.
   
  +-spec pla_chars(Characteristics) -> Characteristics
  +	when
  +		Characteristics :: {array, list()} | [tuple()].
  +%% @doc CODEC for Pricing Logic Algorithm characteristics.
  +pla_chars({array, L} = _Characteristics) ->
  +	pla_chars(L, []);
  +pla_chars(Characteristics) when is_list(Characteristics) ->
  +	{array, pla_chars(Characteristics, [])}.
  +%% @hidden
  +pla_chars([], Acc) ->
  +	lists:reverse(Acc).
  +
   -spec offer_status(Status) -> Status
   	when
   		Status :: atom() | string().
  
positive.code: 	Offer = {"productOffering", product(ProdID)},
  	instance(T, ProductInstance, [Offer | Acc]);
  instance([characteristics | T], #product_instance{characteristics = Chars} = ProductInstance, Acc) ->
  	Characteristics = {"characteristics", characteristics(Chars)},
  	instance(T, ProductInstance, [Characteristics | Acc]);
  instance([status | T], #product_instance{status = undefined} = ProductInstance, Acc) ->
  	instance(T, ProductInstance,  Acc);
  
negative.code: pla([specification | T], #pla{specification = Spec} = P, Acc) ->
  	pla(T, P, [{"plaSpecId", Spec} | Acc]);
  pla([characteristics | T], #pla{characteristics = Chars} = P, Acc) ->
  	pla(T, P, [{"plaSpecCharacteristicValue", pla_chars(Chars)} | Acc]);
  pla([last_modified | T], #pla{last_modified = {Last, _}} = P, Acc)
  		when is_integer(Last) ->
  	pla(T, P, [{"lastUpdate", ocs_rest:iso8601(Last)} | Acc]);
  pla([_H | T], P, Acc) ->
  	pla(T, P, Acc);
  pla([], #pla{name = Name} = _P, Acc) ->
  	{struct, [{"id", Name} | lists:reverse(Acc)]}.
  %% @hidden
  pla([{"name", Name} | T], Acc) when is_list(Name) ->
  