code: function find_monotone_chain_max( frontMono ) {
  			var frontPt, firstPt, ymaxPt;
  
  			var monoPosmax = frontMono;
  			firstPt = ymaxPt = frontMono.vFrom;
  
  			frontMono.marked = true;
  			frontMono = frontMono.mnext;
  			while ( frontPt = frontMono.vFrom ) {				// assignment !
  				if (frontMono.marked) {
  					if ( frontPt == firstPt )	break;	// mono chain completed
  					console.log("ERR unique_monotone: segment in two chains", firstPt, frontMono );
  					return	null;
  				} else {
  /*					if ( frontPt == firstPt ) {			// check for robustness
  						console.log("ERR unique_monotone: point double", firstPt, frontMono );
  					}		*/
  					frontMono.marked = true;
  				}
  				if ( PNLTRI.Math.compare_pts_yx( frontPt, ymaxPt ) == 1 ) {
  					ymaxPt = frontPt;
  					monoPosmax = frontMono;
  				}
  				frontMono = frontMono.mnext;
  			}
  			return	monoPosmax;
  		}
docs: <<<<<< public