anchor.diff:  		insert(finish(), element);
   	end;
   
  +	function List.pop_back(): longInt;
  +	var
  +		res: longInt;
  +	begin
  +		res := finish().prev().data();
  +		erase(finish().prev());
  +		pop_back := res;
  +	end;
  +
   	procedure List.insert(p: Iterator; element: longInt);
   	var
  -		pelement: pint;
   		prevIt, currentIt: Iterator;
   	begin
  +		currentIt := Iterator.create(element);
   		if head = tail then
   		begin
  -			new(pelement);
  -			pelement^ := element;
  -			head := Iterator.create(pelement);
  +			head := currentIt;
   			head.setNext(tail);
   			tail.setPrev(head);
   			exit();
   		end;
   		if p = head then
   		begin
  -			new(pelement);
  -			pelement^ := element;
  -			head := Iterator.create(pelement);
  +			head := currentIt;
   			head.setNext(p);
   			p.setPrev(head);
   		end
   		else
   		begin
   			prevIt := p.prev();
  -			new(pelement);
  -			pelement^ := element;
  -			currentIt := Iterator.create(pelement);
  +			currentIt := currentIt;
   			prevIt.setNext(currentIt);
   			currentIt.setNext(p);
   			currentIt.setPrev(prevIt);
  
positive.code: 
  		public
  			constructor create();
  			
  			function start(): Iterator;
  			function finish(): Iterator;
  
  
negative.code: 			function empty(): boolean;
  
  			procedure push_back(element: longInt);
  			function  pop_back(): longInt;
  			procedure insert(p: Iterator; element: longInt);
  			procedure erase(p: Iterator);
  		end;
  
  implementation
  	constructor Iterator.create(element: longInt);
  	begin
  		new(raw_data);
  		raw_data^ := element;
  	end;
  
  	destructor Iterator.destroy();
  	begin
  		dispose(raw_data);
  	end;
  
  	function Iterator.next(): Iterator;
  