anchor.diff:  		_:_ ->
   			{error, 400}
   	end.
  -%% @hidden
  -po_alteration(ProdAlterObj) ->
  +
  +-spec po_alteration(Prefix, ProdAlterObj) -> Result
  +	when
  +		Prefix	:: erlang_term | json,
  +		ProdAlterObj :: list(),
  +		Result	:: #alteration{} | {error, Status},
  +		Status	:: 400.
  +%% @private
  +po_alteration(erlang_term, ProdAlterObj) ->
   	try
   		{_, ProdAlterName} = lists:keyfind("name", 1, ProdAlterObj),
   		{_, {struct, ProdAlterVFObj}} = lists:keyfind("validFor", 1, ProdAlterObj),
  
positive.code: %%----------------------------------------------------------------------
  %%  internal functions
  %%----------------------------------------------------------------------
  
  -spec product_offering_price(POfPrice) -> Result when
  	POfPrice	:: list(),
  	Result 	:: Prices | {error, StatusCode},
  	Prices	:: [#price{}],
  	StatusCode	:: 400.
  %% @doc construct list of product
  %% @private
  product_offering_price([]) ->
  	{error, 400};
  product_offering_price(POfPrice) ->
  	po_price(POfPrice, []).
  %% @hidden
  po_price([], Prices) ->
  	Prices;
  po_price([{struct, Object} | T], Prices) ->
  	try
  		{_, ProdName} = lists:keyfind("name", 1, Object),
  		{_,  {struct, VFObj}} = lists:keyfind("validFor", 1, Object),
  
negative.code: 					amount = ProdAmount},
  				case lists:keyfind("productOfferPriceAlteration", 1, Object) of
  					false ->
  						po_price(erlang_term, T, [Price1 | Prices]);
  					{_, {struct, ProdAlterObj}} ->
  						case po_alteration(erlang_term, ProdAlterObj) of
  							{error, Status} ->
  								{error, Status};
  							Alteration ->
  								Price2 = Price1#price{alteration = Alteration},
  								po_price(erlang_term, T, [Price2 | Prices])
  						end
  				end;
  			true ->
  