anchor.diff:  public abstract <B> B foldRight(B z, BiFunction<A, B, B> f);
   ----
   
  -The `z` parameter is the starting result. It is called `z` by convention, meaning "zero", which would be the starting result for the sum of a list of integers.
  +The `z` parameter is the starting result. It is called `z` by convention, meaning "zero", by analogy with the starting result for the sum of a list of integers.
   
   The operation used for the fold is represented by a `BiFunction`, taking an `A` (element of the list) and a `B` the current result) and returning a `B` (the next current result). In the `Nil` class, the implementation simply return `z`, since there is no element to which to apply the function:
   
  
positive.code: 
  Now, you think we are left with the hard part: implementing the `pack` method. First, let's look at the algorithm:
  
  - look at the first element. If it does not fit in the knapsack, discard it.
  
  - if it fits, lets make two different computations:
  
  
negative.code:   public final int weight;
    public final double value;
  
    public Item(String name, int weight, double value) {
      this.name = name;
      this.weight = weight;
      this.value = value;
  