/// <summary>
		///  Supports threads
		/// </summary>
		/// <param name="points"></param>
		/// <param name="filterData"></param>
		/// <returns></returns>
		public static IList<P> FilterByType(IList<P> points, FilterData filterData)
		{
			if (filterData.TypeFilterExclude.Count == GmcSettings.Get.MarkerTypes.Count)
			{
				// Filter all 
				return new List<P>(); // empty				
			}
			if (filterData.TypeFilterExclude.None())
			{
				// Filter none
				return points;
			}

			// Filter data by typeFilter value			
		    return FilterByTypeHelper(points, filterData);
		}
		// O(n)
		private static IList<P> FilterByTypeHelper(IList<P> points, FilterData filterData)
		{
			return points
				.Where(p => filterData.TypeFilterExclude.Contains(p.T) == false)
				.ToList();
		}