/// <summary>
 /// Checks if the pipeline where the mouse click has been made is not connected(null).
 /// </summary>
 /// <param name="location">The location of the mouse click.</param>
 /// <returns>True if the pipeline is null.Otherwise false.</returns>
 public override bool IsLocationEmpty(Point location)
 {
     if (UpperHalf.Contains(location))
     {
         return(this.UpperOutcomePipeline == null);
     }
     else if (LowerHalf.Contains(location))
     {
         return(this.LowerOutcomePipeline == null);
     }
     else if (IncomeHalf.Contains(location))
     {
         return(this.IncomePipeline == null);
     }
     return(false);
 }
 /// <summary>
 /// Gets a concrete point that is used for connecting pipelines based on where the mouse click has been made.
 /// </summary>
 /// <param name="location">The location of the mouse click.</param>
 /// <returns>A concrete prefixed point.</returns>
 public override Point?GetPipelineLocation(Point location)
 {
     if (UpperHalf.Contains(location))
     {
         return(upperHalfPoint);
     }
     else if (LowerHalf.Contains(location))
     {
         return(lowerHalfPoint);
     }
     else if (IncomeHalf.Contains(location))
     {
         return(incomeHalfPoint);
     }
     return(null);
 }