I am trying to use Java 8 method references in my code. There are four types of method references available. 

1. Static method reference.
2. Instance Method (Bound receiver).
3. Instance Method (UnBound receiver).
4. Constructor reference.

With `Static method reference` and `Constructor reference` i have no problem, but `Instance Method (Bound receiver)` and `Instance Method (UnBound receiver)` really confused me. In `Bound` receiver, we are using an Object reference variable for calling a method like: 

```
objectRef::Instance Method

```

In `UnBound` receiver we are using Class name for calling a method like: 

```
ClassName::Instance Method.

```

I have the following question: 

1. What is the need for different types of method references for Instance Methods?
2. What is the difference between `Bound` and `Unbound` receiver method references?
3. Where should we use `Bound` receiver and where should we use `Unbound` receiver?

I also found the explanation of `Bound` and `Unbound` receiver from [Java 8 language features books](https://books.google.co.in/books?id=TnU_BAAAQBAJ&pg=PA154&lpg=PA154&dq=java%208%20method%20reference%20unbound%20and%20bound&source=bl&ots=VZt9o58Bwg&sig=KucWWaGHAfcCoir3Sks3WWsUx-s&hl=en&sa=X&ved=0ahUKEwjBuKe09bXLAhXCj44KHWiZAYAQ6AEISTAH#v=onepage&q=java%208%20method%20reference%20unbound%20and%20bound&f=false), but was still confused with the actual concept.