static ByteBufferRange decode(String string){
  int prefix=string.indexOf(':');
  int sep=string.indexOf('-',prefix + 1);
  checkArgument(prefix >= 0 && sep >= 0,"Invalid split string: %s",string);
  char[] start=new char[prefix + sep - (prefix + 1)];
  string.getChars(0,prefix,start,0);
  string.getChars(prefix + 1,sep,start,prefix);
  char[] end=new char[prefix + string.length() - (sep + 1)];
  string.getChars(0,prefix,end,0);
  string.getChars(sep + 1,string.length(),end,prefix);
  byte[] startBytes, endBytes;
  try {
    startBytes=Hex.decodeHex(start);
    endBytes=Hex.decodeHex(end);
  }
 catch (  DecoderException e) {
    throw new IllegalArgumentException(format("Invalid split string: %s",string));
  }
  return new ByteBufferRangeImpl(ByteBuffer.wrap(startBytes),ByteBuffer.wrap(endBytes),-1,false);
}

static ByteBufferRange decode ( String string ) { int prefix = string . indexOf ( ':' ) ; int sep = string . indexOf ( '-' , prefix + 1 ) ; checkArgument ( prefix >= 0 && sep >= 0 , "Invalid split string: %s" , string ) ; char [ ] start = new char [ prefix + sep - ( prefix + 1 ) ] ; string . getChars ( 0 , prefix , start , 0 ) ; string . getChars ( prefix + 1 , sep , start , prefix ) ; char [ ] end = new char [ prefix + string . length ( ) - ( sep + 1 ) ] ; string . getChars ( 0 , prefix , end , 0 ) ; string . getChars ( sep + 1 , string . length ( ) , end , prefix ) ; byte [ ] startBytes , endBytes ; try { startBytes = Hex . decodeHex ( start ) ; endBytes = Hex . decodeHex ( end ) ; } catch ( DecoderException e ) { throw new IllegalArgumentException ( format ( "Invalid split string: %s" , string ) ) ; } return new ByteBufferRangeImpl ( ByteBuffer . wrap ( startBytes ) , ByteBuffer . wrap ( endBytes ) , - 1 , false ) ; }
parses a hex string that looks like " commonprefix : startsuffix - endsuffix " .
