question: public final double doOperation ( ) throws OperatorFailedException { int index ; if ( updateMap == null ) { index = MathUtils . nextInt ( parameter . getDimension ( ) ) ; } else { index = updateMap . get ( MathUtils . nextInt ( updateMapSize ) ) ; } double draw = ( 2.0 * MathUtils . nextDouble ( ) - 1.0 ) * windowSize ; double newValue = parameter . getParameterValue ( index ) + draw ; final Bounds < Double > bounds = parameter . getBounds ( ) ; final double lower = ( lowerOperatorBound == null ? bounds . getLowerLimit ( index ) : Math . max ( bounds . getLowerLimit ( index ) , lowerOperatorBound ) ) ; final double upper = ( upperOperatorBound == null ? bounds . getUpperLimit ( index ) : Math . min ( bounds . getUpperLimit ( index ) , upperOperatorBound ) ) ; if ( condition == BoundaryCondition . reflecting ) { newValue = reflectValue ( newValue , lower , upper ) ; } else if ( condition == BoundaryCondition . absorbing && ( newValue < lower || newValue > upper ) ) { return 0.0 ; } else if ( newValue < lower || newValue > upper ) { throw new OperatorFailedException ( "proposed value outside boundaries" ) ; } parameter . setParameterValue ( index , newValue ) ; return 0.0 ; }
target:  change the parameter and return the hastings ratio.