code: public String replace(String input, final UriPlaceHolderReplacerListener listener) {
  		final List<Triple<Token, Token, String>> replace = new ArrayList<>();
  
  		UriBaseListener rewriterListener = new UriBaseListener() {
  
  			@Override
  			public void enterBind_parameter(Bind_parameterContext ctx) {
  				String value = listener.onParameterName(pathSegmentIndex, ctx.bind_parameter_name().getText());
  				replace.add(new Triple<Token, Token, String>(ctx.start, ctx.stop, value));
  			}
  
  			@Override
  			public void enterPath_segment(Path_segmentContext ctx) {
  				pathSegmentIndex++;
  			}
  		};
  
  		return replaceInternalFromUri(input, replace, rewriterListener);
  	}
docs: <p>
  Replace place holders from URI string
  </p>.
  
  @param input the input
  @param listener the listener
  @return string obtained by replacements