bytes[n++]=b;
chars[n++]=c;
    public static String decodePath(String path)    {        int len=path.length();        byte[] bytes=null;        int n=0;        boolean noDecode=true;                for (int i=0;i<len;i++)        {            char c = path.charAt(i);            if (c<0||c>0xff)                throw new IllegalArgumentException("Not decoded");                        byte b = (byte)(0xff & c);            if (c=='%' && (i+2)<len)            {                noDecode=false;                b=(byte)(0xff&TypeUtil.parseInt(path,i+1,2,16));                i+=2;            }            else if (bytes==null)            {                n++;                continue;            }                        if (bytes==null)            {                noDecode=false;                bytes=new byte[len];                for (int j=0;j<n;j++)                    bytes[j]=(byte)(0xff & path.charAt(j));                            }                        bytes[n++]=b;        }        if (noDecode)            return path;        try        {                return new String(bytes,0,n,__CHARSET);        }        catch(UnsupportedEncodingException e)        {            return new String(bytes,0,n);        }    }